Неявное преобразование аргументов конструктора в C++11C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Неявное преобразование аргументов конструктора в C++11

Сообщение Anonymous »

Давайте рассмотрим следующий код:

Код: Выделить всё

class A{
public:
A(int x){}
};

class B{
public:
B(A a){};
};

int main() {
B b = 5;
return 0;
}
И при компиляции компилятор жалуется, что:

Код: Выделить всё

/home/test/main.cpp:80: candidate constructor not viable: no known conversion from 'int' to 'A' for 1st argument
Я не хочу создавать конструктор B(int) — мне бы хотелось, чтобы компилятор неявно преобразовал этот int в A объект.

РЕДАКТИРОВАТЬ:

Прямая инициализация работает следующим образом:< /p>

Код: Выделить всё

B b(5);
Можно ли вместо этого использовать оператор присваивания?

Подробнее здесь: https://stackoverflow.com/questions/173 ... ion-in-c11
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»