Probleme avec la classe vector
Bonjour,
J'ai une classe TActiveContainer:
Code:
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:
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:
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.