[C++] Frage zu MFC-Anwendungen

Hi Peter,

dein Tip hat leider nicht geholfen. Setze ich #pragma once in die .h Datei, kann ich mit der betreffenden Variable nur noch in der einen .cpp Datei arbeiten

Hoffe du hast noch eine andere Lösung parat ;)

Bis dann
WhiteGandalf
 
Hi,

dann beschreibe dein problem bitte genauer. Dieses mit .h und .cpp Dateien ist ein wenig wage.

Poste bitte die Entsprechenden Code-Schnipsel aus den .h und .cpp Dateien (Deklaration, Instanziierung).


Auch die Information, um was für einen Applikationstyp (Dialog, SDI,MDI) es sich handelt kann von Hilfe sein.

Und ausserdem gibt es noch ein Unterforum 'Visual Studio und MFC', wo du in Zukunft MFC Fragen reinposten solltest ;-)

Peter
 
Achso ok, das Unterforum hab ich nicht gesehen, werde demnächst drauf achten ;)

Hier nochmal mein Problem:
Ich habe eine Dialogbasierte MFC-Anwendung erstellt. Ich benenne diese hier im Beispiel einfach mal 'A'. Nun wird ja automatisch A.cpp angelegt (die anderen automatisch angelegten Dateien sind hier nicht relevant).
Nun habe ich manuell noch einen weiteren Dialog eingefügt (hier 'B' genannt), d.h. ich habe zusätzlich noch B.cpp. Der Knackpunkt ist jetzt folgender:
Jetzt habe ich eine neue .h Datei erstellt und einige Funktionen und Klassen geschrieben. Und von einer dieser Klassen möchte ich nun eine Instanz erstellen auf die ich sowohl in A.cpp als auch in B.cpp Zugriff habe.
#include ich besagte .h Datei jeweils in A.cpp und B.cpp, gibt mir der Compiler einen Fehler aus ("Beispielinstanz ist schon in A.obj definiert"). #pragma once konnte den Fehler wie gesagt leider auch nicht beheben.

Ich hoffe das war nun verständlich^^
mfg WhiteGandalf
 
Hallo WhiteGandalf,

Definitionen im Header sollte man vermeiden; das bringt häufig Ärger.
Du solltest stattdessen dieses Objekt (das A und B verwenden sollen) innerhalb einer Klasse definieren, auf deren Instanz sowohl A und B zugreifen können. Bei einer dialogbasierten App bietet sich da die Applikationsklasse an:

C++:
// Definition im Header der App-Klasse
class CMyApp : public CWinApp
{
    // ...

public:
    C  m_c // Ich nenne die Klasse mal 'C' :)) 
};

// Verwendung in A oder B
((CMyApp *)AfxGetApp())->m_c. ...
Gruß
MCoder
 
Zurück