如何使派生类访问彼此的成员数据和功能。这两个类都是从基类继承为纯抽象的。
这是我的方案
class Base
{
public:
virtual void do_something() = 0;
};
class Derived1 : public Base
{
public:
virtual void do_something()
{
// need to use a2
// need to use func
}
private:
int a1;
};
class Derived2 : public Base
{
public:
virtual void do_something()
{
// need to use a1
}
void func(){}
private:
int a2;
};
答案 0 :(得分:1)
可能你需要重新考虑你的设计。对于Derived2的对象,没有为a1分配内存,对于a2和Derived1也没有内存。你问的是相当于说,猫和狗都是动物,我想在狗中使用猫::胡须。 你可能需要这个:
class Base
{
public:
virtual void do_something() = 0;
};
class Derived : public Base
{
public:
int a1;
int a2;
void func(){}
};
class Derived1 : public Derived
{
public:
virtual void do_something()
{
// can use a2 and func here
}
};
class Derived2 : public Derived
{
public:
virtual void do_something()
{
// need to use a1
}
void func() override {}
};