Daniro_San
@Daniro_San
Программист

Магия конструкторов?

struct WorkExample
{
    WorkExample (const int &number ){}
};

WorkExample wOne(1); // ok
WorkExample wTwo=1; // ok

struct Example
{
    Example ( const std::string &line ){}
};

Example one("line"); // ok
Example two="line"; // error


Почему не получается вызвать конструктор Example сразу после обьявления через = ?
Если заменить const std::string &line на const char *const line, все работает.
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
Компилятор не делаем больше одного преобразования
Если заменить на Example two=std::string("line");, то все заработает
Example two=std::string("line");  ->  Example two(std::string("line")); //подходит конструктор Example ( const std::string &line )

Example two="line";  ->  Example two("line"); //Нет конструктора, который принимает const char*
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы