Bonjour,

J'ai une classe TActiveContainer:

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();
}
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
	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);
Normalement, cela devrait marcher... mais non!
Voici ce qu'il m'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
TActiveContainer: 
list.size: 1242552
list.init: 
list.size: 1242552
Comment se fait-il que mon vecteur ne soit pas vide?

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.