抱歉标题含糊。
我正在编写一组类,并且我无法想出一种直观的方法来分解基本构造函数中所做的事情和派生构造函数中所做的事情。
我的问题如下:
所有课程都要求按顺序完成步骤 A、C 和 E。因此将它们放在基本构造函数中是有意义的。
步骤 B 和 D 对于每个派生类都是唯一的。
不幸的是,B 必须在A之后C之前完成,同样 D 必须在C之后E 之前完成。这些是 OpenGL 函数调用,我受限于它们的顺序。
我最初尝试了一些类似的东西,希望尽可能地封装在基类中:
public class MyBase
{
MyBase()
{
A():
B();
C();
D();
E();
}
void A() {...}
void C() {...}
void E() {...}
virtual void B() = 0;
virtual void D() = 0;
}
public class MyDerived : public MyBase
{
MyDerived() : MyBase() {}
void B() {...}
void D() {...}
}
但这在 C++ 中是不可能的......
除了:
public class MyBase
{
MyBase() {}
void A() {...}
void B() {...}
void C() {...}
}
public class MyDerived : public MyBase
{
MyDerived()
{
A():
B();
C();
D();
E();
}
void B() {...}
void D() {...}
}
我希望尽可能避免代码重复。
有任何想法吗?