【发布时间】:2015-02-01 15:21:06
【问题描述】:
我正在尝试创建一些类,它们都是抽象类(我们称之为)BaseClass 的派生类。在 BaseClass 中,我想对派生类中声明的 static 变量(数组)进行操作。 C++ 中是否有一种聪明的方法让编译器知道静态变量将在派生类中声明?或者,例如,我应该在派生类的构造函数中将静态变量的引用传递给基类构造吗?这是我的想法:
class BaseClass
{
std::vector<float> &vector;
public:
BaseClass(std::vector<float> &dVector):vector(dVector){};
void vectorOperation()
{
vector.doSomething();
}
...
}
class DerivedClass : public BaseClass
{
static std::vector<float> sVector;
DerivedClass():BaseClass(sVector){};
...
}
我的解决方案正确吗?有没有更好的方法来做到这一点?
【问题讨论】:
-
抱歉,刚刚注意到它是静态的。我想你可以使用 CRTP。
-
命名当然不是最好的选择:
std::vector<float> &vector;应该是s.th。至少喜欢std::vector<float> &vector_;。 -
就您描述的目的而言,您的解决方案看起来简单、优雅且高效。
标签: c++ inheritance static