i have 2 classes
class class1{public:class1(const class2 &c){}};class class2{public:class2(){}};
the compiler give me error because the class2 isn't defined, how to fix that?
class class1{public:class1(const class2 &c){}};class class2{public:class2(){}};
Quote:Original post by _fastcall
Use a forward declaration for B or move the definition for class B above class A. See also: Organizing Code Files in C and C++.
Quote:Original post by codder88
if i add "class class2;" at the top of the file the compiler give me again the errors
Quote:
in fact i want to use the class1 in class2 and class2 in class1
#pragma once#include "main.h"class CClass2;class CClass1{ public: CClass1(const CClass2 &Class2) { this->SetVar(Class2.GetVar()); } void SetVar(int val) { var=val; } int GetVar() const { return var; } private: int var;};class CClass2{ public: CClass2(const CClass1 &Class1) { var = 5; } int GetVar() const { return var; } private: int var;};
Quote:CClass2(const CClass1 &Class1) { var = 5; }
class CClass1{ public: CClass1(const CClass2 &Class2); void SetVar(int val); int GetVar() const; private: int var;};
#include "CClass1.h"#include "CClass2.h"CClass1::CClass1(const CClass2 &Class2){ this->SetVar(Class2.GetVar());}void CClass1::SetVar(int val){ var=val;}int CClass1::GetVar(){ return var;}
// contents of main.h// contents of class2.hclass CClass2;class CClass1{ public: CClass1(const CClass2 &Class2); // OK, forward declaration void SetVar(int val) { var=val; } int GetVar() const { return var; } private: int var;};// contents of class2.hclass CClass2{ public: CClass2(const CClass1 &Class1) { var = 5; } int GetVar() const { return var; } private: int var;};// implementation file class1.cpp// Couldn't do this earlier, requires a full class definition.CClass1::CClass1(const CClass2 &Class2){ this->SetVar(Class2.GetVar());}