Wykorzystanie klasy okna MFC we własnej klasie, #include

0

Problem rozwiązany.
Patrz niżej.

Witam serdecznie,

Wiem, że pewnie podobne pytania są już tutaj w setkach kopii, ale NAPRAWDĘ nie mogę dojść do tego jak poradzić sobie z tym problemem. A jest on niby prosty:

Tworzę aplikację dialogową (SDI) MFC.</li> Główna klasa okna dialogowego, pojawiającego się domyślnie, jest oczywiście tworzona przez edytor. Jej nazwa to CtestDlg </li> Ja dodałem swoją klasę MyClass1.</li> Chcę, aby jedna ze zmiennej mojej klasy MyClass1 była typu głównego okna aplikacji (chcę przechowywać do niego wskaźnik). Musi być ona zatem typu CtestDlg.</li> </ol>

Problem jest jednak taki, że bez zainkludowania pliku nagłówkowego głównego okna, czyli testDlg.h, kompilator wypisuje błędy:
error C2146: syntax error : missing ';' before identifier 'test'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Jest to w miarę oczywiste, no bo przecież nie został nawet poinformowany, że taka klasa istnieje.

Załączam więc plik testDlg.h w pliku nagłówkowym mojej klasy, czyli mam coś takiego:

#pragma once
#include "testDlg.h"

class MyClass1
{
public:
	MyClass1(void);
	~MyClass1(void);
	CtestDlg test;
};

Wtedy nie ma błędów w mojej klasie, ale za to dostaję:
testdlg.h(15) : error C2065: 'IDD_TEST_DIALOG' : undeclared identifier

Jest to z pewnością dlatego, że plik testdlg.h jest ponownie załączany w pliku testdlg.cpp

Chociaż z drugiej strony normalnie ten plik jest załączany również w pliku test.cpp (czyli pliku głównym programu).

Mam nadzieję, że udało mi się choć w miarę wytłumaczyć mój problem. Jakbym mógł prosić o:

Informację co zrobić, aby ten KONKRETNY przykład działał?</li> Jakąś informację/link o ogólnych zasadach załączania plików nagłówkowych. Bo myślałem, że jedyna to, żeby plik z deklaracjami klas pojawił się przed ich wykorzystaniem, ale widać to nie wystarcza...</li> </ol>

Z góry dziękuję.

</i></span></i>
0

Okazuje się, że jednak nie był to błąd z inkludowaniem. Dziwiło mnie właśnie to, że coś mogłoby być właśnie z tym źle. Okazuje się po prostu, że klasa okna aplikacji potrzebuje jeszcze jednego pliku nagłówkowego. Zatem załączenie jednego pliku .h nie wystarczało. Potrzebny był jeszcze drugi.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1