class base
{
};
class derived : private base
{
};
int main()
{
base* b = 0;
derived* d = 0;
b = d;
return 0;
}
Почему при компиляции ошибка в строке "b = d;". Что с логической точки зрения происходит при присваивании указателей?
Здравствуйте, Аноним, Вы писали:
А>А>class base
А>{
А>};
А>class derived : private base
А>{
А>};
А>int main()
А>{
А> base* b = 0;
А> derived* d = 0;
А> b = d;
А> return 0;
А>}
А>
А>Почему при компиляции ошибка в строке "b = d;". Что с логической точки зрения происходит при присваивании указателей?
При присваивании указатели "приводятся к одному знаменателю", а точнее к типу переменной
b, а именно к типу
base*.
Т.к. привидением типа занимается кто то "внешний" для объекта класса
derived то и доступ к его базовому классу не имеет, тоесть не может преобразовать.
Как то так