I'm trying to create a few classes which all are derived classes from an abstract class (lets call it) BaseClass. In BaseClass I want to operate on static variables (arrays) declared in derived classes. Is there a clever way in C++ to let the compiler know that static variable will be declared in derivered class? Or should I, for instance, in my derived classes' constructors pass a reference to a static variable to base class construct? This is my idea:
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){};
...
}
Is my solution correct? Is there any better way to do this?
std::vector<float> &vector;should be s.th. likestd::vector<float> &vector_;at least.