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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren