Von aus Dialog genutzer Klasse im Dialog zeichnen.
-
Wenn ich jetzt aber meine Dialog in der Klasse inkludiere, was ich von Anfang an befürchtet hatte bekomme ich diese Fehlermeldungen für die Klasse und den Dialog
1>c:\projects\mytool\audiotest.h(28) : error C2143: syntax error : missing ';' before '*' 1>c:\projects\mytool\audiotest.h(28) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\projects\mytool\audiotest.h(28) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
-
Was steht denn in der Zeile, aus der der folgende Fehler kommt?
1>c:\projects\mytool\audiotest.h(28) : error C2143: syntax error : missing ';' before '*'Nett wäre es 2-3 Zeilen vor und nach der Meldung zu sehen.

-
CStatic* m_stPb1; DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedOk(); afx_msg void OnBnClickedCancel(); private: -> CSinSoundBuffer* m_pSinBuf; //Hier meckert der Compiler das fehlende Semikolon an. CDirectSound* m_pSoundCtrl;Nehme ich den include auf den Dialog aus der Klasse wieder raus dann wird auch wieder korrekt kompiliert.
Sollte man solche Rückwärtsinkludierungen nicht eigentlich auch meiden?
-
Kannst du den Zeiger verwenden, wenn der include weg ist?
Wenn ja dann lass ihn weg.Zum Thema Rückwärts includieren müsste ich dir allerdings recht geben.
Wobei ich es gerade sehe, der Zeiger den du setzen solltest wäre nicht im Dialog sondern in deiner Klasse richtig gewesen.
Du setzt ja in deinem Dialog einen Zeiger auf die Klasse, jedoch sagte ich in der Klasse einen Zeiger auf den Dialog.
-
Aber wie instanziier ich dann ein Objekt auf meine Klasse welche ja auch im Dialog benötigt wird.
-
Ach du wolltest deine Klasse dort als Property Zeiger initialisieren?
Wobei ich mich da frage, warum er einen Fehler wirft. Bringt er noch einen Fehler, dass er den Datentyp "CSinSoundBuffer" nicht kennt?
-
Ne habe den Fehler gerade beseitigt in dem ich vor der Deklaration der Klasse CSinSoundBuffer die Vorwärtsdeklaration mache anstatt nem include als
class CAudiotest;Jetzt klappt es wie gewünsch und ich kannaus der Klasse auf den Dialog zugreifen.
Aber danke für die Unterstützung bis hierhin.
-
Ich war wohl etwas zu vorschnell, jetzt meckert der Compiler sobald ich innerhalb der Klasse auf Methoden aus dem Dialog zugreifen will und gibt diese
Fehlermeldung aus.1>c:\projects\gsm testtool\sinsoundbuffer.cpp(47) : error C2027: use of undefined type 'CAudioTest'
1> c:\projects\gsm testtool\sinsoundbuffer.h(11) : see declaration of 'CAudioTest'
1>c:\projects\gsm testtool\sinsoundbuffer.cpp(47) : error C2227: left of '->DrawCurves' must point to class/struct/union/generic typeDeklariert wird wie folgt
class CAudioTest; //Vorwärtsdek. class CSinSoundBuffer { ... CAudioTest* myDlg; ... } //Zugriff in der Methode der Klasse myDlg->DrawCurves(Wert, Wert); //Im Dialog wird nach Instanziierung der Klasse m_pSinBuf->myDlg = this;
-
Hast du vorwärts und Rückwärtsinclude drin?
-
Nein nur vorwärts
-
Setz mal noch den Rückwärts-Include und gib dann mal bescheid was dein Compiler sagt.

-
Wieder die gleichen Fehler wie vorhin.
Vorwärtsdek hab ich drin gelassen
-
Wobei mich das gerade verwundert. Da ich selbst momentan ein Programm habe in dem ich in beide Richtungen include und es funktioniert.
Hängt damit zusammen, dass ich in meinen Dialogen Daten aus dem MainDialog brauche und somit eben Zeiger auf den Maindialog drin habe.
Darüber kann ich wunderbar auf Funktionen und Property's des MainDialogs zugreifen.
MainDialog:
#include <foo> ... #include "dialog2.h" ... // Im On Init: dialog2 dlg; dlg.dialog1 = this; ...Dialog2:
#include <bar> ... #include "dialog1.h" ...In der Headerdatei dann eben als Property:
dialog1 *myDlg;Und mein Programm tut was es soll.
-
Aber was anderes mache ich ja auch nicht

-
Ich probier mal eben was.
/////////////
Der Include innerhalb der Klasse, erfolgt der in der Header oder in der CPP Datei?
-
Wenn du den include des Dialogs meinst, in der .h Datei
-
Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:
class CAudioTest;Es reicht doch ein include der Headerdatei.
Desweiteren müsstest du nicht CAudioTestDlg includieren?
// So ich mach jetzt Feierabend und von zu Haus aus lösen wir dein Problem.
-
inflames2k schrieb:
Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:
class CAudioTest;Das hatte ich ja vorhin nur getestet und damit halt keine Fehlermeldungen bekommen wie beim inkludieren.
Habe beim Anlgen der Klasse das Dlg Kürzel vergessen daher ist CAudioTest schon richtig:D.
Ich mache auch gleich Feierabend, machen wir morgen weiter.
Danke und nen schönen Feierabend.
-
mr. main schrieb:
inflames2k schrieb:
Ich versteh grad eins nicht, warum hast du in deinem Programm extra stehen:
class CAudioTest;Das hatte ich ja vorhin nur getestet und damit halt keine Fehlermeldungen bekommen wie beim inkludieren.
Habe beim Anlgen der Klasse das Dlg Kürzel vergessen daher ist CAudioTest schon richtig:D.
Ich mache auch gleich Feierabend, machen wir morgen weiter.
Danke und nen schönen Feierabend.Also wenn ich eine Anwendung erstelle, erstellt er automatisch die CAnwendungsnameDlg.cpp und CAnwendungsnameDlg.h und extra noch die Datei CAnwendungsname.cpp.
-
Das erklärt sich dadurch, das dies ein Dialog ist, der aus dem menü einer View aufgerufen wird und somit als Resource geaddet wurde und dann vergibt man ort ja einen Namen.