这里派生类中有我的课:C++从两个相同的基类
class Base1
{
public:
Base1();
~Base1();
virtual void main_func()=0;
}
class D1 : public Base1
{
public:
D1();
~D1();
virtual void main_func(do_d1_main(););
}
class D2 : public Base1
{
public:
D2();
~D2();
virtual void main_func(){do_d2_main();};
}
class Base2
{
public:
Base2();
~Base2();
int m_needed_by_b1;
}
class D12B2: public Base2, public D1, public D2
{
public:
D12B2();
~D12B2();
}
这里的问题:
两个do_main_func1()
和do_main_func2()
需要Base2
访问成员m_needed_by_b1
。怎么样?
我可以为class D12B2
中的每个定义虚拟函数main_func
吗?这将使他们能够访问所有D12B2
,包括Base2
。我将如何分别指定每个?
我曾考虑在Base1
中添加(受保护)成员,即指向Base2
对象的指针。这将必须由D12B2
设置。似乎可能有一个更优雅的方式来做到这一点。
TIA
肯
做到这一点(有些人不喜欢)的一种方法是使用多重继承;使'D1'和'D2'分别来自*'Base1'和'Base2'。 – Brian
在'do_d1_main','do_d2_main','do_main_func1'和'do_main_func2'之间,您已经在代码或描述中指定了四件事情,其中没有任何定义。 'do_d1_main'和'do_main_func1'(以及它们的'd2'的对应部分)应该是相同的函数吗? – WhozCraig
这通常被认为是[设计/代码气味](http://c2.com/cgi/wiki?CodeSmell) –