Bonjour,
J'ai une classe TActiveContainer:
Quand je veux l'utiliser, je fais ceci:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 template <class T> class TActiveContainer : public IActiveContainer { private: ///////////////////////////////////////////////////// // private associations ///////////////////////////////////////////////////// vector<IActiveObject*> elements; IActiveContainer* src; public: ///////////////////////////////////////////////////// // public operations ///////////////////////////////////////////////////// inline TActiveContainer(); /*inline TActiveContainer(const TActiveContainer &activeContainer); inline TActiveContainer& operator= (const TActiveContainer& activeContainer);*/ inline void init(IActiveContainer* src); inline int size(); ..... }; template <class T> TActiveContainer<T>::TActiveContainer() { this->elements.clear(); assert(this->elements.size() == 0); this->src = NULL; } template <class T> void TActiveContainer<T>::init(IActiveContainer* src) { this->src = src; this->elements.clear(); assert( this->elements.size() == 0 ); } template <class T> int TActiveContainer<T>::size() { this->elements.size(); }
Normalement, cela devrait marcher... mais non!
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 texte = "TActiveContainer: "; Form1->Memo1->Lines->Add(texte); TActiveContainer<TRegion*> list; texte = "list.size: "; texte += list.size(); Form1->Memo1->Lines->Add(texte); texte = "list.init: "; Form1->Memo1->Lines->Add(texte); list.init(NULL); texte = "list.size: "; texte += list.size(); Form1->Memo1->Lines->Add(texte);
Voici ce qu'il m'affiche:
Comment se fait-il que mon vecteur ne soit pas vide?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TActiveContainer: list.size: 1242552 list.init: list.size: 1242552
Ce qui est bizarre, c'est que cela se passe comme ceci sur un serveur COM que j'ai réalisé moi-même.
Si je fais la même chose sur le programme client, cela marche très bien.
Partager