Консультация № 42075
04.05.2006, 19:21
0.00 руб.
0 2 2
Добрый день, тыкните пожалуйста на ошибку в коде.
В строке " MDESKTOP(...){...; Windows=new MWINDOWS(...);}"
появляется еррор: "Неизвестная структура MWINDOWS".

Приложение:
struct MWINDOWS;struct MDESKTOP{ ...public: MWINDOWS *Windows; ... MDESKTOP(...){...; Windows=new MWINDOWS(...);} ...};struct MWINDOWS{ ...public: MDESKTOP *MAINSTRUCT; ...};

Обсуждение

Неизвестный
04.05.2006, 22:12
общий
это ответ
Здравствуйте, Dadrum!
Попробуй разделить объявление структур с реализацией- всё получится. Или поменяй порядок определения структур. См. приложение. Под VC7 компилится.
Да- если не в курсе- для структур члены по умолчанию public, так что если закрытых или частных нету, то public можно и не писать.

Приложение:
struct MWINDOWS{ public: struct MDESKTOP *MAINSTRUCT; };struct MDESKTOP{public: struct MWINDOWS *Windows; MDESKTOP() { Windows=new MWINDOWS(); } };
Неизвестный
05.05.2006, 09:15
общий
это ответ
Здравствуйте, Dadrum!

Дело в том, что MWINDOWS хоть и объявлена, но ещё не создана (компилятор не знает её размер), так как для того, чтобы её создать, ему нужна уже созданная (компилятор должен знать её размер) MDESKTOP. IMHO поэтому.

Выход, наверно, такой:
Опишите конструктор MDESKTOP вне тела класса (внутри класса только заголовок).

Удачи!
Форма ответа