Forum: PC-Programmierung Abstract Factory mit Shared Pointern und dann auch noch Qt


von Gert (Gast)


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.

von Sven B. (scummos)


Lesenswert?

Poste doch bitte mal den Code und die Fehlermeldung vom Compiler. So 
kann dir niemand helfen.

von Rolf M. (rmagnus)


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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

I had a problem and used C++, now I have a problem factory :-)

von Mark B. (markbrandis)


Lesenswert?

Johann L. schrieb:
> I had a problem and used C++, now I have a problem factory :-)

Made my day :-)))

von Programmierer (Gast)


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.

von Gert (Gast)


Angehängte Dateien:

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

von Sven B. (scummos)


Lesenswert?

... kannst du nicht einfach die Textdateien anhängen. Ein Screenshot vom 
Editor ist wirklich eine ziemlich schlechte Möglichkeit Code zu posten 
... dann könnte man das auch mal ausprobieren und so ...

: Bearbeitet durch User
von Gert (Gast)


Angehängte Dateien:

Lesenswert?

Sven B. schrieb:
> ... kannst du nicht einfach die Textdateien anhängen. Ein Screenshot vom
> Editor ist wirklich eine ziemlich schlechte Möglichkeit Code zu posten
> ... dann könnte man das auch mal ausprobieren und so ...

Anbei. Danke!

von Sven B. (scummos)


Lesenswert?

Wo ist das #include <QSharedPointer>?

von Gert (Gast)


Lesenswert?

Danke, das wars tatsächlich. Den Datentyp hat der Compiler aber trotzdem 
erkannt und angezeigt, weshalb ich dachte, das include sei nicht 
notwendig.

Gruß Gert

von Sven B. (scummos)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.