Вызов частной функции базового класса через указатель в определении полученного класса [дублировать]C++

Программы на C++. Форум разработчиков
Anonymous
Вызов частной функции базового класса через указатель в определении полученного класса [дублировать]

Сообщение Anonymous »

Я понимаю, что контроль доступа C ++ является классовым вместо экземпляра, для которой функция getThat () ниже может вызвать частную функцию get () через указатель:

Код: Выделить всё

class IDT
{
private:
virtual int get() { return 42; }
public:
virtual void myFunc() {
int val1 = get();
printf("%d", val1);
}
int getThat(IDT* that) { return that->get(); }
};
Тем не менее, он, кажется, не применяется, когда вступает в игру, функция myfunc () ниже дает мне ошибку ошибки: функция idt :: get (объявлено в строке 16) недоступна.
class IDTnew : public IDT
{
public:
void myFunc() override {
int val1 = get();
int val2 = myIdt->get();
printf("%d", val1 + val2);
}
private:
int get() override { return 42; }
IDT *myIdt;
};
< /code>
Кто -нибудь может научить меня, почему это так? Как мне сделать, чтобы вызвать частное/защищенное функцию члена через указатель базового класса? или единственный выбор, который у меня есть, - сделать функцию публичной?

Подробнее здесь: https://stackoverflow.com/questions/797 ... classs-def

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