общение между классом и формой

sealm

Турист
Регистрация
31 Дек 2005
Сообщения
14
Реакции
0
Credits
8
Меня интересует решение на c++ для создания 2 классов
Мне надо что б каждый из 2 классов "понимал" тип другого класса
(что бы в теле каждого из классов можно бы было использовать тип другого класса).
Например есть класс формы A и класс B. надо что б по событию из тела каждого из классов,
с помощью pointer'а на другой класс можно бы было к нему обратиться.
Каждый из 2 классов должен хранить pointer на другой.
Надо что бы классы A и B были не в одном а в разных файлах.

Если в каждом из них включить include на другой => Error!
 

Unsiker

Турист
Регистрация
19 Фев 2007
Сообщения
40
Реакции
0
Credits
72
И что?

____________________
На правильно поставленный вопрос всегда можно получить правильный ответ. Автор, в чем суть твоего вопроса?
 

Ognev

ex-Team DUMPz
Местный
Регистрация
20 Авг 2004
Сообщения
2,079
Реакции
908
Credits
0
sealm,
я что-то не пойму, в этой теме вам что не понравилось, чтобы заводить для того же вопроса еще одну?
 

nulls

Местный
Регистрация
6 Июн 2005
Сообщения
102
Реакции
13
Credits
190
Отделяйте реализацию класа от его интерфейса.
И инклудте в необходимые места хидоры класов, интерфейс которых необходим в данном месте, если необходимо только обьявить указатель на неизвестный клас, делейте предварительное обьявление.
Пример:
==================A.h=============
#ifndef CLASS_A
#define CLASS_A

class A
{
public:
A();
~A();
void hello(void);
};

#endif
================A.cpp==============
#include "A.h"
#inlcude <iostream>

A::A(){}
A::~A(){}
void A::hello(void){ std::cout<<"Hello! This is A class!"<<std::endl; }

================B.h================
#ifndef CLASS_B
#define CLASS_B
class A;

class B
{
public:
B(A* _a);
~B();

A* a;
void hello(void);
};

#endif
================B.cpp==============
#include "B.h"
#include "A.h"
B::B(A* _a) : a(_a) {}
B::~B(){ if (a){ delete a; a = NULL; } }
void B::hello(void){ a->hello(); }
================main.cpp===========
#include "B.h"
#include "A.h"

int main(int argc, char* argv[])
{
A a;
B b(&a);
b.hello();
return 0;
}
 
Последнее редактирование модератором: