взгляд на следующий код:Как преобразовать абстрактный класс в нормальный класс без перегрузки чистой виртуальной функции?
class A
{
public:
virtual int getN() = 0;
};
class B : public A
{
private:
int n = 2;
public:
int getN() { return n; }
};
class C : public A
{
// do not contain property n, it nolonger need getN();
};
класса А является абстрактным классом. Теперь у меня есть класс C, полученный от A. Но это не так, как класс B имеет свойство n. Поэтому я не могу перегрузить getN()
, а затем класс C является абстрактным классом, который я не могу создать. Итак, если я хочу создать экземпляр класса C, что мне делать?
Сделать 'getN()' приватным в 'C'. –
Поскольку класс A непригоден в качестве базы C, класс A непригоден в качестве базы C. Dang. Я умный. S, M, R, T. –
ваш дизайн неправильный. Базовый класс должен иметь свойства, которые представляют интерес для всех подклассов. В вашем примере вам лучше переместить getN() в B, поскольку он не нужен C – Nandu