3
我遇到了继承问题,我不知道我的解决方案是否优雅。我有这样的类覆盖类成员变量
class Var
{
public:
virtual void doSomething();
}
class DerivedVar : public Var
{
public:
virtual void doSomething();
void doSomethingElse();
}
我也有MyDerived继承自MyBase。 MyBase有Var类型的成员,而MyDerived需要有DerivedVar的成员,因此可以调用doSomething()。目前,我使用模板来解决这个问题
template<typename VarType>
class MyBase
{
protected:
VarType var;
public:
MyBase() { var.doSomething(); }
}
class MyDerived : public MyBase<DerivedVar>
{
public:
MyDerived() : MyBase() { var.doSomethingElse(); }
}
我想知道是否有更好的方法来做到这一点(例如,而不需要使用模板)如果你希望或需要
如果您不知道CRTP,您可能会发现有关CRTP的内容。 – chris 2013-04-07 17:17:39
那么......如果你不需要在堆上添加一个间接和分配级别,你总是可以存储一个指针...... – StoryTeller 2013-04-07 17:20:34