Вызов частной функции базового класса через указатель в определении полученного класса [дублировать]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
Ответить

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

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

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

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

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