автоматическое преобразование из строки в myclass

Я определил класс

class Version
{
public:
Version(std::string versionStr)
{
//do something
}
}

Я хочу иметь возможность использовать его следующим образом

void foo(Version v1) {//do somthing};
void main()
{
foo("test");
}

Я хотел бы, чтобы v1 стал объектом, как будто я сделал:

void main()
{
Version v1("test");
foo(v1);
}

это возможно?

1

Решение

В вашем коде слишком много уровней неявного конструирования. "string literal" имеет тип const char [] а также не std::string, Только один уровень неявного конструирования происходит автоматически. Попробуйте добавить конструктор, который принимает const char * вместо:

class Version {
// ...
Version(const char *_vstr) : versionStr(_vstr) {}
// ...
}

Живая демоверсия.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]