J'utilise Qt est franchement c'est un bonheur. J'ai jamais vu une bibliothèque aussi performante et facile à utiliser en C++.
Pour l'histoire des conteneurs si on travail avec de cette façon:
QList<Cell*> on ajoute des pointeurs dont si on veut une copie il faut explicitement appellée une méthode clone genre:
MyList << MyCell->clone();
Dans le cas d'un QList<Cell> l'ajout d'un élément entraine l'appel du constructeur par copie de ta classe Cell.
Soit Cell(const Cell& cell) donc si elle n'est pas correctement implémentée tu n'auras pas une vraie copie dans ta liste.
Enfin, si tu copies ton objet qui contient une liste tu dois naturellement développer le constructeur par copie qui recopie la liste. Sinon le constructeur par défaut de QList<T> sera utilisé. Et enfin pour ne pas se prendre la tête avec la destruction d'une liste... On préfère utiliser un QList<std::auto_ptr<Cell> > par exemple.
Uther Le 22/05/2008 à 16:55 Je suis assez d'accord sur le fait que QT4 est super pratique et simple(presque autant que java). Le seul gros défaut à l'utilisation est que les conteneurs ne sont pas aussi simples qu'il le paraissent si on ne les utilise pas pour contenir des pointeurs. Pour le coup, j'ai du mal a comprendre pourquoi ne pas avoir utilisé la STL
pour avoir leur truc à eux, na!
sinon ce qui me manque c'est surtout un IDE avec compile-as-you-type et un truc d'autocomplétion efficace. J'utilise codeblocks qui est léger, mais c'est pas top. Eclipse se démerde comment, à ce niveau?
Uther Le 22/05/2008 à 17:02Edité par Uther le 23/05/2008 à 10:27 Perso j'utilise qDevelop qui est pas mal mais encore perfectible.
Les conteneurs Qt sont antérieurs aux conteneurs de la STL.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Regarde la doc tu verras des Q3PtrList... (c'était bien pire avant et ça date) ^^
Pour l'environnement de développement c'est vrai que c'est la galère. Code::Blocks est pour l'instant, pour moi, le plus pratique. Eclipse je l'ai essayé mais il est hyper lourd et lent à la compilation (le Java ok le reste bof). Enfin, QDevelop un peu trop jeune comme Monkey Studio d'ailleur.
Reste que j'ai beau cherché dans la doc je ne trouve pas l'implémentation par Trolltech des pointeurs intelligents. (Ils disent de ne pas utiliser la stl mais bon ça manque un peu cette fonctionnalité, certe on peut la recoder mais bon bof).
Un pointeur intelligent sous Qt s'écrit tout simplement QPointer<T>.
Ainsi une liste de Cell héritant de QObject peut s'écrire.
QList<QPointer<Cell> > MyList;
et la destruction de cette liste se fait simplement par
qDeleteAll(MyList);
Attention, QPointer n'est pas vraiment un pointeur intelligent (tout ce que ça fait, c'est que c'est mis à zéro quand l'objet pointé est détruit), et puis ça ne marche que pour un QObject.
Link Le 24/05/2008 à 23:13 Ce sont donc de "vraies" références faibles?

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.