Скажем, у меня есть класс Base и производный класс вроде этого:C++ | Способ доступа к производному классу через указатель на базу?
//Base.h
#pragma once
class Base
{
public:
Base();
~Base();
private:
int A;
};
//Foo.h
#pragma once
#include "Base.h"
class Foo : public Base
{
public:
Foo();
~Foo();
void setFoo(int number) { foo = number; };
private:
int foo;
};
Скажем, я объявить указатель на базу:
Base* BasePtr = new Foo();
Как я могу получить доступ setFoo()
используя эту Base* Baseptr;
переменную? Можно ли это сделать без использования виртуальных методов? Кажется противоречащим интуиции иметь виртуальный метод в базе только для того, чтобы использовать собственные методы Foo
.
Причина, по которой я спрашиваю, имеет назначение, для которого требуется массив указателей на базу, а также способ редактировать собственные атрибуты производных классов.
Благодаря
У вас есть проблема, если вам нужно знать, что производный тип. Вы должны закодировать интерфейс, который реализует ваши классы, и использовать указатели интерфейса. Наследование интерфейса очень полезно. – dgsomerton