Передача указателя на класс в диалог
От: E_g_0_r  
Дата: 08.11.05 13:29
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

Возможно, этот вопрос уже затрагивался, но ответа на него мне найти не удалось.

Проблема в следующем:

Объявлен собственный класс (к примеру MyClass) — как обычно, в файле MyClass.h
объявление, в файле MyClass.cpp реализация.

В некотором месте программы осуществляется работа с этим классом (определяются некоторые его свойства). При этом при наступлении некоторого события должен осуществляться вызов диалога, а диалог этот должен знать состояние класса (на основании состояния класса определяется состояние элементов диалога). Само собой напрашивается, реализовать конструктор диалога, одним из параметров которого был бы указатель на класс.

Вызываю создание и отображение диалога следующим образом:

#include "MyClass.cpp"
...
MyClass cc;
...
CDialog Mydlg (cc);

В файле Mydlg.cpp реализация соответствующего конструктура:

CMydlg::CMydlg(MyClass* cc)
: CDialog(CMydlg::IDD, NULL)
{
...
}

(#include "MyClass.h" в файле Mydlg.cpp не делаю!).

В файле Mydlg.h объявление конструктора:

class CMydlg : public CDialog
{
// Construction
public:
...
  CMydlg::CMydlg(MyClass* cc400)
...
}

Естественно, если в файле Mydlg.h не делаю подключения

#include "MyClass.h",

проект не компилится — выдается сообщение, что не известени класс MyClass. Так оно и есть.
Однако, когда в файле Mydlg.h делаю подключение #include "MyClass.h",
проект все равно не компилится с ошибкой
error C2011: 'MyClass' : 'class' type redefinition

То же самое, если в файле Mydlg.cpp едлаю подключение #include "MyClass.h",
выдается такая же ошибка.

Передвавть в конструктор диалога все нужные для диалога свойства класса нехорошо, к тому же в методах диалога хотелось бы иметь возможность вызывать методы класса.

Что посоветуете?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.