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

sealm

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

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

Unsiker

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

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

Ognev

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

nulls

Member
Joined
Jun 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