#INCLUDEs und Zeiger auf CArray
-
Hallo allerseits,
ich habe hier ein Problem, habe natürlich auch schon gesucht aber irgendwie nichts gefunden mit dem ich mein Problem gelöst bekommen habe.
Ich habe ein Programm (als Dialog) welches einen modalen Dialog öffnet. In diesem Dialog wird dann ein CArray gefüllt und soll gefüllt zurück an das Programm gegeben werden.
Damit ich genau das gleiche CArray in beiden Klassen habe, habe ich dieses in einer extra Header geschrieben und diese dann in beide Dialogklassen eingebunden:
#pragma once #include "afxtempl.h" class CAblaufpunkt { Public: int m_nDauer; int m_nWert; }; typedef CArray<CAblaufpunkt, CAblaufpunkt> CAblaufplan;
Das funktioniert aber schonmal nicht
Fehler:
c:\projekte\listtest\ablaufplan.h(9) : error C2062: 'int'-Typ unerwartet
c:\projekte\listtest\ablaufplan.h(9) : error C2238: Unerwartete(s) Token vor ';'
C:\Projekte\ListTest\DlgArrayFuellen.cpp(54) : error C2039: 'm_nDauer' : Ist kein Element von 'CAblaufpunkt'Ich hatte dann eigentich vor im Hauptprogramm ein Object meines CArray zu erzeugen und den Zeiger darauf an den modalen Dialog zu übergeben. Der füllt das Array dann und wenn er zu geschlossen wird kann das Hauptprogramm damit weiter arbeiten.
Zuerst hatte ich die Definition von CAblaufplan einfach in beide Dialogklassen geschrieben. Da ließ sich das Programm kompilieren, aber die Zuweisung des Zeigers schlug fehl, da CEinklasse::CAblaufplan nicht ind CAndereKlasse::CAblaufplan konvertiert werden konnte
Kopierkonstruktor würde ich am liebsten vermeiden da pro Array-Element nicht immer nur 2 ints gespeichtert werden, sonder ein paar mehr Werte. Zudem kann des Array auch relativ groß werden.
mfg
tobi
-
ohh mann,
ich habe den Fehler gerade gefunden, Public wird klein geschrieben, dann funktioniert es genauso wie ich es mir vorgestellt habe
Aber damit der Thread nicht ganz sinnlos ist habe ich nochmal ne andere Frage, natürlich auch zu dem Thema:
Ich brauche jetzt die oben genannte CAblaufplan.h
sowohl in der CPP als auch in H. um eine Membervariable zu erstellen, Wieso?
TestDlg.cpp:
#include "stdafx.h" #include "ListTest.h" #include "Ablaufplan.h" #include "DlgArrayFuellen.h" #include "TestDlg.h"
TestDlg.h
#include "Ablaufplan.h" ... CAblaufplan m_Ablaufplan;
Sollte die TestDlg.h nicht schon CAblaufplan kennen? Schliesslich wird in der TestDlg.cpp ja zuerst Ablaufplan.h und dann erst TestDlg.h eingebunden ?!?
p.s.: Wenn ich in der Suche nach "include" suche, finde ich nix, kann doch ned sein, oder?
mfg
tobi
-
public mit kleinem 'p'
-
Tow-B.de schrieb:
Schliesslich wird in der TestDlg.cpp ja zuerst Ablaufplan.h und dann erst TestDlg.h eingebunden ?!?
Vielleicht wird TestDlg.h auch noch an anderer Stelle eingebunden?
Tow-B.de schrieb:
p.s.: Wenn ich in der Suche nach "include" suche, finde ich nix, kann doch ned sein, oder?
Wer ist ned? Oder meinst du nett?
-
denke mal das liegt an der include-reihenfolge
änder die mal so:
#include "stdafx.h" #include "TestDlg.h" #include "ListTest.h" #include "DlgArrayFuellen.h"
-
Die Suche ist wohl mal wieder kaputt.
Schau mal in Forentechnik vorbei, ob es da schon bekannt ist.
-
Danke euch beiden
[/quote]Wer ist ned? Oder meinst du nett?[/quote]
Öhm, ich merke schon, ich wohne hier zu Nahe an den Hessenned = nicht.
Also nochmal auf deutsch:
"Wenn ich nach dem Word "include" suche, dann findet er keinen einzigen Eintrag" - Was ja schon nicht sein kann, da er diesen hier finden müsste..@Horst2:
Du hast Recht, mit einer anderen Reihenfolge klappt es (teilweise). Beim kürzen fürs Forum ist mir aber ein Fehler unterlaufen, das Projekt heißt "ListTest" und die Dialogklasse ListTestDlg, also muss ListTest natürlich vor ListTestDlg:#include "stdafx.h" #include "ListTest.h" #include "ListTestDlg.h" #include "DlgArrayFuellen.h"
kompiliert und läuft.
ABER beim rumstöbern hab ich auch DAS herausgefunden
In der ListTest.cpp (Projekt-Datei) wird auch die ListTestDlg.h eingebunden. Natürlich weiß die nicht (ned
) über die ListTestDlg.cpp bescheid
edit: @estartu_de: die Suche geht, nur nach "inlude" kann man nicht suchen
-
Tow-B.de schrieb:
die Suche geht, nur nach "inlude" kann man nicht suchen
Das wäre auch komplett sinnlos. "include" kommt in praktisch jedem Beispielcode vor.
-
Ja, jetzt wo du es sagst
aber was mache ich wenn ich probleme mit den #INCLUDE habe?
egal.. funzt jetzt ja..
THX..
-
Ansonsten kannst du auch eine Vorwärtsdeklaration Deiner Klasse im Header machen und als Member dann einen Pointer erstellen.
Dann in der cpp-Datei einfach den Header Deiner Klasse includen und den Pointer initialisieren.
So mache ich sowas immer, da ich ungerne includes in einem Header mache.