Bonjour,
j'ai un problème qui me bloque depuis 48 heures, j'ai décidé de finalement vous soumettre la question :
pour la figure suivante :
mes classes :
déclaration dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 /* virtual */class WeightKernel { public: WeightKernel(); virtual ~WeightKernel() { } ; virtual void init(int)=0; //virtual void initializeWeight(void) =0; }; class Convolutional : public WeightKernel { int _kernelNumero ; int _predecessorMapNumber; ..... public: Convolutional(); ~Convolutional(); void init(int); ....... };
mon problème se situe au niveau de l'instanciation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WeightKernel* kernelTable ;
le fait est que kernelTable[i] n'accède pas aux méthodes de la classe Convolutional mais uniquement celles de la classe abstraite de départ. (je veux bien car j'ai pas casté dynamiquement). En scrutant les rapport d'erreurs, le vftable n'occure que pour kerneltable[0]. Là se situe ma question comment se fait il que le vftable est appelé uniquement pour la première boucle autrement dit, la boucle marche pour l'unique première itération mais pas pour les autres. Pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ...... kernelTable = new Convolutional[6] ; // 6 par ex for ( int i = 0 ; i < 6 ; i++ ) kernelTable[i].init(i);
dans l'attente de vos réponse, je vous en remercie d'avance !
Partager