struct B; struct A { operator B(); }; struct B { B operator + (B) {return B();} }; A::operator B() { return B(); } int main() { A x; B y; y+x; // Как запретить неявное преобразование для данного оператора/ группы операторов? };
Ответ
Неявное преобразование можно запретить так:
struct A
{
explicit operator B();
};
Теперь только явно можно преобразовать A в B
Если же хочется оставить неявное преобразование в целом, но в частных случаях оно нежелательно, тогда можно воспользоваться таким трюком:
#include
Комментариев нет:
Отправить комментарий