S
sop3k
In this code:
*******************FILE: "ClassA.h"***************8
#ifndef _CLASSA_H_
#define _CLASSA_H_
#include "ClassC.h"
class ClassA
{
ClassC& C;
public:
ClassA();
~ClassA();
};
#endif
************************FILE: "ClassAImpl.cpp"******************
#include <iostream>
#include "ClassA.h"
ClassA::ClassA ()
{
std::cout<<"ClassA"<<std::endl;
}
ClassA::~ClassA()
{
std::cout<<"~ClassA"<<std::endl;
}
*****************FILE: "ClassB.h"********************8
#ifndef _CLASSB_H_
#define _CLASSB_H_
#include "ClassA.h"
class ClassB
{
ClassA& A; //line: #1
public:
ClassB(ClassA&); //line: #2
~ClassB();
};
#endif
*******************FILE: "ClassBImpl.cpp"*****************
#include <iostream>
#include "ClassB.h"
ClassB::ClassB(ClassA& a) : A(a)
{
std::cout<<"ClassB"<<std::endl;
}
ClassB::~ClassB()
{
std::cout<<"~ClassB"<<std::endl;
}
***************FILE: "ClassC.h"***************
#ifndef _CLASSC_H_
#define _CLASSC_H_
#include "ClassA.h"
#include "ClassB.h"
class ClassC
{
ClassA& A; //line : #3
ClassB& B;
public:
ClassC(ClassA&, ClassB&); //line: #4
~ClassC();
};
#endif
**********************FILE: "ClassC.cpp"********************
#include <iostream>
#include "ClassC.h"
ClassC::ClassC(ClassA& a, ClassB& b) : A(a), B(b)
{
std::cout<<"ClassC"<<std::endl;
}
ClassC::~ClassC()
{
std::cout<<"~ClassC"<<std::endl;
}
***********************FILE: "MainClass.h"**************************
#ifndef _MAIN_H_
#define _MAIN_H_
#include "ClassA.h"
#include "ClassB.h"
#include "ClassC.h"
class MainClass
{
ClassA* A;
ClassB* B;
ClassC* C;
public:
MainClass();
~MainClass();
};
#endif
******************FILE: "MainClass.cpp"*************************
#include <iostream>
#include "MainHeader.h"
MainClass::MainClass()
{
std::cout<<"MainClass"<<std::endl;
A = new ClassA;
B = new ClassB(*A);
C = new ClassC(*A,*B);
}
MainClass::~MainClass()
{
std::cout<<"~MainClass"<<std::endl;
delete A;
delete B;
delete C;
}
******************FILE:"Main.cpp"******************************
#include "MainClass.h"
int main()
{
MainClass MainObj;
return 0;
}
This is an expample code base on my real program. When I want to
compile this with MS VC++ 6.0 I get an errors such this:
error C2143: syntax error : missing ';' before '&' (line: #1)
ClassA' : missing storage-class or type specifiers (line: #1)
'A' : missing storage-class or type specifiers (line: #1)
unexpected 'class ClassB (' (line: #2)
unexpected token(s) preceding ';' (line: #2)
syntax error : missing ';' before '&' (line: #3)
ClassA' : missing storage-class or type specifiers (line: #3)
'A' : missing storage-class or type specifiers (line: #3)
unexpected 'class ClassC (' (line: #4)
unexpected token(s) preceding ';' (line: #4)
*******************FILE: "ClassA.h"***************8
#ifndef _CLASSA_H_
#define _CLASSA_H_
#include "ClassC.h"
class ClassA
{
ClassC& C;
public:
ClassA();
~ClassA();
};
#endif
************************FILE: "ClassAImpl.cpp"******************
#include <iostream>
#include "ClassA.h"
ClassA::ClassA ()
{
std::cout<<"ClassA"<<std::endl;
}
ClassA::~ClassA()
{
std::cout<<"~ClassA"<<std::endl;
}
*****************FILE: "ClassB.h"********************8
#ifndef _CLASSB_H_
#define _CLASSB_H_
#include "ClassA.h"
class ClassB
{
ClassA& A; //line: #1
public:
ClassB(ClassA&); //line: #2
~ClassB();
};
#endif
*******************FILE: "ClassBImpl.cpp"*****************
#include <iostream>
#include "ClassB.h"
ClassB::ClassB(ClassA& a) : A(a)
{
std::cout<<"ClassB"<<std::endl;
}
ClassB::~ClassB()
{
std::cout<<"~ClassB"<<std::endl;
}
***************FILE: "ClassC.h"***************
#ifndef _CLASSC_H_
#define _CLASSC_H_
#include "ClassA.h"
#include "ClassB.h"
class ClassC
{
ClassA& A; //line : #3
ClassB& B;
public:
ClassC(ClassA&, ClassB&); //line: #4
~ClassC();
};
#endif
**********************FILE: "ClassC.cpp"********************
#include <iostream>
#include "ClassC.h"
ClassC::ClassC(ClassA& a, ClassB& b) : A(a), B(b)
{
std::cout<<"ClassC"<<std::endl;
}
ClassC::~ClassC()
{
std::cout<<"~ClassC"<<std::endl;
}
***********************FILE: "MainClass.h"**************************
#ifndef _MAIN_H_
#define _MAIN_H_
#include "ClassA.h"
#include "ClassB.h"
#include "ClassC.h"
class MainClass
{
ClassA* A;
ClassB* B;
ClassC* C;
public:
MainClass();
~MainClass();
};
#endif
******************FILE: "MainClass.cpp"*************************
#include <iostream>
#include "MainHeader.h"
MainClass::MainClass()
{
std::cout<<"MainClass"<<std::endl;
A = new ClassA;
B = new ClassB(*A);
C = new ClassC(*A,*B);
}
MainClass::~MainClass()
{
std::cout<<"~MainClass"<<std::endl;
delete A;
delete B;
delete C;
}
******************FILE:"Main.cpp"******************************
#include "MainClass.h"
int main()
{
MainClass MainObj;
return 0;
}
This is an expample code base on my real program. When I want to
compile this with MS VC++ 6.0 I get an errors such this:
error C2143: syntax error : missing ';' before '&' (line: #1)
ClassA' : missing storage-class or type specifiers (line: #1)
'A' : missing storage-class or type specifiers (line: #1)
unexpected 'class ClassB (' (line: #2)
unexpected token(s) preceding ';' (line: #2)
syntax error : missing ';' before '&' (line: #3)
ClassA' : missing storage-class or type specifiers (line: #3)
'A' : missing storage-class or type specifiers (line: #3)
unexpected 'class ClassC (' (line: #4)
unexpected token(s) preceding ';' (line: #4)