Hi,
First of all, as this is not related to the previous post, you should have started a new thread.
Then you should not include source files (.C) in header files (.h), and use forward declarations… Do you have some experience with C++?
Anyway, here is a possible solution (but not very elegant…):
Main.C:[code]#include “Class1.C”
#include “Class2.C”
#include “anc.c”
void main(){
Class1* c = new Class1();
Class2* d = c->returnClass2();
d->callExternal();
externalFunc();
}
[/code]
Class1.h:[code]#ifndef Class1_h
#define Class1_h
#include
class Class2;
class Class1 {
public :
Class1();
virtual Class2* returnClass2();
};
#endif[/code]
Class1.C:[code]#include “Class1.h”
#include “Class2.h”
Class1::Class1(){
cout << “class1 constr” << endl;
}
Class2* Class1::returnClass2(){
Class2* c = new Class2();
return c;
}[/code]
Class2.h:[code]#ifndef Class2_h
#define Class2_h
class Class2 {
public :
Class2();
virtual void callExternal();
};
#endif[/code]
Class2.C:[code]#include "Class2.h"
extern void externalFunc();
Class2::Class2(){
cout << “class2 constr” << endl;
}
void Class2::callExternal(){
externalFunc();
}[/code]
anc.c:[code]#include
void externalFunc(){
cout << “ext test” << endl;
}[/code]
But you can also use one single source file and one (or more) header file(s)…
Header file:[code]#ifndef MyHeader_h
#define MyHeader_h
#include
class Class2 {
public :
Class2();
virtual void callExternal();
};
class Class1 {
public :
Class1();
virtual Class2* returnClass2();
};
#endif[/code]
Single source file:[code]#include “MyHeader.h”
void externalFunc(){
cout << “ext test” << endl;
}
Class1::Class1(){
cout << “class1 constr” << endl;
}
Class2* Class1::returnClass2(){
Class2* c = new Class2();
return c;
}
Class2::Class2(){
cout << “class2 constr” << endl;
}
void Class2::callExternal(){
externalFunc();
}
void main(){
Class1* c = new Class1();
Class2* d = c->returnClass2();
d->callExternal();
externalFunc();
}
[/code]
Or any intermediate solution…
Cheers, Bertrand.