J'ai un problème complexe avec les tableaux statiques "prioritaires". J'ai des tableaux statiques (pour la simplicité) qui sont de longueur fixe dans différentes classes dérivées, mais toutes les tailles sont connues à la compilation. J'ai aussi une fonction virtuelle dans la classe de base, mais je ne sais pas comment résoudre le problème de surcharger ces tableaux et tailles de tableaux dans les classes dérivées afin que cette fonction virtuelle fonctionne correctement, c.-à-d. contenu des classes dérivées. Exemple:Remplacement des membres statiques et des "tableaux statiques statiques"
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
}
Pourriez-vous suggérer une solution ou d'une autre façon de faire cela correctement? Je pense que std :: vector le ferait (?), Mais a besoin de beaucoup de travail pour s'adapter à mon code existant. Un grand merci, Peter
Merci beaucoup, j'ai essayé comme vous l'avez suggéré et cela fonctionne comme prévu. Malheureusement, je veux pouvoir utiliser le polymorphisme dynamique sur l'interface B, ce qui n'est pas possible de cette manière. Ou est-ce? – Peter