Наши преимущества

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

sealm

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

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

____________________
На правильно поставленный вопрос всегда можно получить правильный ответ. Автор, в чем суть твоего вопроса?
 
Отделяйте реализацию класа от его интерфейса.
И инклудте в необходимые места хидоры класов, интерфейс которых необходим в данном месте, если необходимо только обьявить указатель на неизвестный клас, делейте предварительное обьявление.
Пример:
==================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;
}
 
Последнее редактирование модератором:
Верх