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

sealm

Member
Joined
month_12_short 31, 2005
Messages
14
Reaction score
0
Location
israel
Меня интересует решение на c++ для создания 2 классов
Мне надо что б каждый из 2 классов "понимал" тип другого класса
(что бы в теле каждого из классов можно бы было использовать тип другого класса).
Например есть класс формы A и класс B. надо что б по событию из тела каждого из классов,
с помощью pointer'а на другой класс можно бы было к нему обратиться.
Каждый из 2 классов должен хранить pointer на другой.
Надо что бы классы A и B были не в одном а в разных файлах.

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

Unsiker

Member
Joined
month_2_short 19, 2007
Messages
40
Reaction score
0
Age
42
Location
lol
И что?

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

Ognev

ex-Team DUMPz
Joined
month_8_short 20, 2018
Messages
2,108
Reaction score
902
Age
27
sealm,
я что-то не пойму, в этой теме вам что не понравилось, чтобы заводить для того же вопроса еще одну?
 

nulls

Member
Joined
month_6_short 6, 2005
Messages
102
Reaction score
13
Location
at home
Отделяйте реализацию класа от его интерфейса.
И инклудте в необходимые места хидоры класов, интерфейс которых необходим в данном месте, если необходимо только обьявить указатель на неизвестный клас, делейте предварительное обьявление.
Пример:
==================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;
}
 
Last edited by a moderator:
Top