Reprise du message précédent :
Ma première idée c'était de faire un
static std::vector<ActionListenerFunctor*> actions[NBR_ACTION_TYPES];
En fait chaque composants de l'API a une table dans laquelle il garde ses pointeurs et il passe au controller l'adress de l'entré de sa table pour pouvoir
gérer ses pointeur localement et changer de fonction puis effacer l'enter à la destruction du composant.
Mais j'ai un
error C2036: 'class std::vector<void (__thiscall ActionListener<_Ty>::**)(int,int,int),class std::allocator<void (__thiscall
ActionListener<_Ty>::**)(int,int,int)> > *' : unknown size
//d'ailleur malgré la doc je comprend pas trop cette erreur dans mon cas
et plus chiant ;
error C2662: 'push_back' : cannot convert 'this' pointer from 'class std::vector<void (__thiscall ActionListener<_Ty>::**)(int,int,int),class
std::allocator<void (__thiscall ActionListener<_Ty>::**)(int,int,int)> >' to 'class std::vector<_Ty,_A> &'
donc je m'était dis qu'un matrice ferait l'affaire ...
Mais évidement ça pouvais pas simplement marcher donc j'ai un problème d'allocation complètement débile; le compilateur ne détecte pas d'erreur mais dans le constructeur de Controller quand je fait :
Code :
- //...
- ActionListenerFunctor** Controller::actions;
- //j'ai simplifier l'histoire de la table locale le temps que ça marche
- //sinon j'aurai ActionListenerFunctor*** Controller::actions;
- Controller() {
- if(actions==NULL){
- actions=new ActionListenerFunctor* [NBR_ACTION_TYPES];
- for(unsigned i=0; i<NBR_ACTION_TYPES; i++){
- actions[i]=new ActionListenerFunctor [INIT_CONTOLLER_LENGHT];
- for(unsigned j=0; j<INIT_CONTOLLER_LENGHT; j++){
- cout<<&actions[i][j]<<endl;
- actions[i][j]=NULL;
- }
- }
- }
- }
|
si #define INIT_CONTOLLER_LENGHT 6 no prob
si #define INIT_CONTOLLER_LENGHT 7 no prob
si #define INIT_CONTOLLER_LENGHT 8 segmentation fault!?
0x049B1D30
0x049B1D38
0x049B1D40
0x049B1D48
0x049B1D50
0x049B1D58
0x049B1D60
0x00000038 plantage!
A croire que j'ai offensé le tout puissant par ce que là je vois pas le rapport !?
Sinon je met dans les pages de man qu'on peux pas avoir plus que 6compossants et que faudra attendre la version 2.0 mais je commence à fortement douter que mon projet révolutionne le monde de linformatique ce qui était pourtant ça vocation première...
LeGreg :
Passe à VC7 en plus c'est gratuit:
http://msdn.microsoft.com/visualc/vctoolkit2003/
Ha tiens je savais pas que c'était gratuit je vais tester ça!, mais d'abord finir 2-3 autres details (style aujourd'hui je dois absolument commenter (j'ai 3000lignes du proj sans un comment) ... sans doute le truc le plus chiant de la semaine d'ailleurs...)