У меня сложная проблема с переопределением статических массивов.У меня есть статические массивы (для простоты), которые имеют фиксированную длину в различных производных классах, но все же все размеры известны во время компиляции.У меня также есть виртуальная функция в базовом классе, но я не знаю, как решить проблему переопределения этих массивов и размеров массивов в производных классах, чтобы эта виртуальная функция работала правильно, то есть дает размеры и массивсодержимое из производных классов.Пример:
class B {
private:
// these two are not really meaningful in this class (ABC)
static const int n = 1;
static double da[n];
public:
virtual void f()
{
for(int i = 0; i < n; ++i)
{
// do something with n and da
std::cout << n << std::endl;
}
}
};
class D1 : public B {
private:
// these are subclass-specific (i.e. n might also change)
static const int n = 4;
static double da[n];
};
class D2 : public B {
private:
// these are subclass-specific (i.e. n might also change)
static const int n = 6;
static double da[n];
};
double D1::da[] = {1., 2., 3., 4.};
// ...
int main()
{
B *p = new D;
p->f(); // I'd like to see 4 instead of 1
}
Не могли бы вы предложить исправление или другой способ сделать это правильно?Я думаю, что std :: vector сделает это (?), Но требует много работы для адаптации к моему существующему коду.Большое спасибо, Питер