У меня есть классы A, B. B происходит от A с защищенным, поэтому для включения неявного литья из B в A я добавил оператор литья, но я получаю ошибку при использовании его неявно (все в порядке при его использовании явно).Как определить неявный оператор литья
Как сделать этот код работой?
class A
{
public:
int a;
};
class B : protected A {
public:
int b;
operator const A&()const { return *this; }
};
B b;
const A& a = b; // ERROR: error C2243: 'type cast' : conversion from 'const b *' to 'const A &' exists, but is inaccessible
Как сделать литье неявным?
Почему бы вам просто не сделать наследование публичным? – juanchopanza
, потому что я хочу отключить некоторые функции от пользователя. Поэтому я разрешаю кастинг для ссылки const – bochaltura
Что такое 'a &'? –