Неявное преобразование аргументов конструктора в 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

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