Abstract Factory mit Shared Pointern und dann auch noch Qt

Gast #4363024
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Abstract Factory mit Qt implementiert. Das geht soweit.

Wenn ich das aber mit Shared Pointern implementiere, dann kommt da immer 
was mit 'incomplete class'.

Ich habe auch den ganzen Tag schon bei Google gesucht und musste 
feststellen, dass das bisher (scheinbar) keiner gemacht hat.

Warum? Wo ist das Problem? Und vor allem: Wie macht man das richtig?

Danke Gert.
#4363128
Lesenswert?
• ▲
▼
Gert schrieb:
> ich habe eine Abstract Factory mit Qt implementiert. Das geht soweit.
>
> Wenn ich das aber mit Shared Pointern implementiere, dann kommt da immer
> was mit 'incomplete class'.

Dann mußt du eben irgendwas mit deiner Klasse tun, um sie zu 
komplettieren. Viel spezifischer geht's nicht ohne mehr Info.

> Warum? Wo ist das Problem? Und vor allem: Wie macht man das richtig?

Du müßtest erstmal zeigen, was du nun genau machst.
Gast #4363274
Lesenswert?
• ▲
▼
Gert schrieb:
> Wenn ich das aber mit Shared Pointern implementiere, dann kommt da immer
> was mit 'incomplete class'.
Du darfst die Klasse erst nach ihrer vollständigen Definition verwenden, 
auch wenn du sie als template-Argument an z.B. shared_ptr übergibst. 
z.B.:

Nein:
1
class Foo;
2
shared_ptr<Foo> p;

Ja:
1
class Foo {
2
  void test ();
3
};
4
shared_ptr<Foo> p;

Hat im Endeffekt nichts mit shared_ptr und Qt zu tun, ist nur C++ 
Basiswissen.
Gast #4363484
Lesenswert?
• ▲
▼
Danke für die Antworten!

Ihr habt natürlich recht: Ein Bild sagt mehr als 1000 Worte.

Es sind jetzt sogar zwei Bilder: Das Erste zeigt die Header-Datei und 
das Zweite die Source. Ich habe ein Flag beim Kompilieren gesetzt 
(SHARED), welches zwischen dem normalen Zeiger und dem QSharedPointer 
umschaltet.

Mit dem normalen Zeiger compiliert und linkt Qt ohne Fehler. Beim 
QSharedPointer kommen zwei Fehlermeldungen.

Ich hoffe, das hilft etwas weiter.

Danke Gert
Angehängte Dateien:
#4364485
Lesenswert?
• ▲
▼
Siehst du, an den Screenshots oder aus der ursprünglichen Beschreibung 
wäre das schwer zu erkennen gewesen. ;)
Bei Problemen mit Code: Immer den ganzen Code posten wenn irgendwie 
möglich, auch die Teile von denen du denkst dass sie nicht so wichtig 
sind.
Viel Spaß mit deinem Projekt!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.