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