c++ classes

sealm

Member
Joined
Dec 31, 2005
Messages
14
Reaction score
0
Location
israel
Как сделать на c++ что бы 2 класса из разных файлов видели друг друга?

если делаю так :



##################### File 1 #########################
//consol.cpp
#include <iostream>
#include "inh.cpp"

using namespace std;

class bb;

class aa : public bb
{
public:
int n;

aa() {n=1;}
void aac();
bb *pbb;
void prnaa();
};



void aa::aac() {pbb = new bb(); }
void aa:: prnaa() {cout << "in aa : " << n << endl;}


void main()
{
aa aaa;
aaa.aac();
aaa.pbb->bbc(&aaa);

aaa.pbb->paa->prnaa();
aaa.pbb->paa->n = 5;
aaa.pbb->paa->prnaa();

cin.get();
}


##################### File 2 #########################

//inh.cpp
#include "consol.cpp"

class bb
{
public:
int n2;

bb() {n2=2;}
void bbc(aa *paa2);
aa *paa;
void prnbb();
//~bb();
};

void bb::bbc(aa *paa2) {paa = paa2; }
void bb:: prnbb() {cout << "in bb : " << n2 << endl;}

то получаю ошибку : too many include files:depth=1024



но а если те же 2 класса без includes в одном файле, тогда работает.
 

sealm

Member
Joined
Dec 31, 2005
Messages
14
Reaction score
0
Location
israel
Буду очень благодарен если кто то сможет мне дать полный измененый рабочий пример этих 2 файлов
 

lifemanship

Member
Joined
Oct 30, 2004
Messages
47
Reaction score
7
Age
47
Location
Luka-City/[Minsk]
Буду очень благодарен если кто то сможет мне дать полный измененый рабочий пример этих 2 файлов

в с++ классы объявляют в h файлах

##################### File 1 #########################
//aa.h

#ifndef _aa_h_
#define _aa_h_

#include "bb.h"

class aa : public bb
{
public:
int n;

aa() {n=1;}
void aac();
bb *pbb;
void prnaa();
};

#endif //_aa_h_

##################### File 2 #########################
//bb.h

#ifndef _bb_h_
#define _bb_h_

class aa;

class bb
{
public:
int n2;

bb() {n2=2;}
void bbc(aa *paa2);
aa *paa;
void prnbb();
//~bb();
};

#endif //_bb_h_

##################### File 3 #########################
//console.cpp

#include <iostream>
#include "aa.h"
#include "bb.h"

using namespace std;

void aa::aac() {pbb = new bb(); }
void aa:: prnaa() {cout << "in aa : " << n << endl;}

void bb::bbc(aa *paa2) {paa = paa2; }
void bb:: prnbb() {cout << "in bb : " << n2 << endl;}

void main()
{
aa aaa;
aaa.aac();
aaa.pbb->bbc(&aaa);

aaa.pbb->paa->prnaa();
aaa.pbb->paa->n = 5;
aaa.pbb->paa->prnaa();

cin.get();
}

ошибки сам найдешь
 

sealm

Member
Joined
Dec 31, 2005
Messages
14
Reaction score
0
Location
israel
Спасибо!
И все же меня интересует несколько инное решение :
мне надо что б каждый из 2 классов "понимал" тип другого класса (что бы в теле каждого из классов можно бы было использовать тип другого класса). Например есть 2 формы[console,inh] и надо что б по событию из тела каждой из форм, с помощью pointer'а на другую форму можно бы было к ней обратиться.
Надо что бы классы A и B были не в одном а в разных файлах
 
Last edited by a moderator:
Top