Dans ma première classe, la classe template, j'ai un pointeur vers LayoutButton (avec l'include évidemment). Pour ça c'est bon.
Le problème est dans la deuxième classe : layoutButton. Je n'arrive pas à intégrer un pointeur vers TabView.
J'ai mis le prototype : "template<typename T> class TabView;" mais pourtant l'intégration du pointeur n'es pas bon, "T" reste inconnu dans la classe...
Je ne vois pas où tu utilises T dans la déclaration de ta classe.
Pourquoi un héritage privé de QPushButton ?
Comme le dit bacelar, quand tu as des templates, tu dois generalement mettre les definitions des fonctions dans les headers. Donc avec une lib, tu n'as rien dans le DLL, ca sert a rien.
Il y a quand meme un cas où, c'est utile, c'est si tu instanties explictement tes templates dans les sources. Dans ce cas, tu peux mettre les definitions de fonctions dans les sources. Mais tu perds la possibilité d'instancier le template en dehors de la lib.
De toute façon, les QObject ne sont pas compatibles avec les templates. Je ne sais pas ce que tu veux faire, mais ca me semble problématique.
Le problème c'est que du coup la MainLayout ne connait pas MainWindow (classe de EpiEditor).
C'est de là que j'ai eu l'idée des templates.
Maintenant si il y a un autre moyen je suis preneur.
Est-ce qu'il est possible de stocker dans la classe LayoutPanelBase une variable template ? Si oui, j'aurai juste a faire un dynamique_cast de typeId(variable).name() ?
Comme l'a dit bacelar, tu as un probleme de references circulaires. Et là, c'est encore pire, puisque c'est entre ton exe et la lib. Donc c'est clairement une erreur de conception.
Qu'est ce que tu veux faire exactement ?
Hors sujet : n'utilises pas dynamic_cast, c'est souvent un problème de conception quand tu utilises ca. Avec Qt, tu es obligé parfois de faire du dynamique cast, mais préfère qobject_cast dans ce cas.
Oui je vois bien mais ce que je voudrai c'est que MainLayout puisse marcher avec n'importe quelle nom de classe de EpiEditor
En gros MainLayout c'est une implémentation d'un systeme de layout avec des QTabWidget et TabBar dans des QSplitter etc...
Du coup j'ai mis ça en DLL et je voudrai la réutilisé pour n'importe quelle nom de classe. main du coup la fonction juste en haut dois s'adapter en fonction du nom, et c'est là ou je galère :/
Et pour qobject_cast oui je sais bien, mais si je mets qobject_cast il me demande la macro Q_OBJECT et en la mettant, la dll ne veut plus se créer
Je ne connais pas Qt mais pour les MFC qui est aussi une bibliothèque graphique, l'utilisation de composant graphique dans des Dll est extrêmement contrainte. C'est des Dll d’extension MFC, qui imposent l'utilisation d'un nombre impressionnant de MACRO et de classe de base, de primitive de threading, de dispatching des messages, etc... .
Il y a de grande chance que cela soit le cas aussi avec Qt, voir que ce genre d'acrobatie ne soit pas du tout prise en compte.
Il faut au moins au minimum écumer la documentation de Qt sur cette problématique avant de réinventer une roue complètement carré, ou vous battre contre des moulins à vent.
Vous raisonnez qu'en terme de "nom de classe", poussé par l'apparente simplicité de template, mais là, vous êtes clairement pas dans les bons paradigmes.
Vous devriez concevoir une "classe/interface API" que votre exécutable implémenterait, et que votre Dll utiliserait. Cette classe serait dans un .h commun aux deux projets.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Il me semble aussi, mais c'est peut être périmé, que dériver une classe template de QObject ne fonctionne pas car le MOC n'est pas capable de générer le code qui va bien derrière.
De toute façon, les QObject ne sont pas compatibles avec les templates.
Oui, c'est est encore vrai. Mais preum's
(hors sujet : l'equipe de wobok avait implémenté une version du moc qui acceptait les templates - a priori, c'est pas complexe a faire - mais ca était refusé par Qt :D)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Discord NaN. Mon site.
Je suis parti du principe que oui, c'est une classe template.
Discord NaN. Mon site.
Discord NaN. Mon site.
Discord NaN. Mon site.
Discord NaN. Mon site.