Несколько неявных конверсий на пользовательских типах не разрешены?C++

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

Сообщение Anonymous »

class C {
public:
C() { }
};

class B {
public:
B(C c) { }
B() { }
};

class A {
public:
A(bool b) { }
A(B b) { }
};

int main() {
A a1 = true; // bool -> A is allowed
A a2 = B(); // B -> A is allowed

A a3 = 7; // int -> bool -> A is allowed
A a4 = C(); // C -> B -> A isn't allowed
}
< /code>

Почему я могу использовать двухэтапное неявное преобразование с Bool < /code>, но не могу использовать его с C < /code>?
Что такое Общее правило, описывающее многоэтапное неявное преобразование?

Подробнее здесь: https://stackoverflow.com/questions/128 ... ot-allowed
Ответить

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

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

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

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

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