0
我有两个cpp文件,每个文件都包含它们自己的类。在我的main.c文件中,我创建了这些类的全局声明。我得到一个错误在我First.cpp和Second.cpp的F_method
和S_method
,我尝试引用全球类的实例里面:C++外部错误
In member function 'void First::F_method()': error: invalid use of incomplete type 'class Second' note: forward declaration of 'class Second'
任何帮助将非常感谢!
MAIN.C
#include "First.h"
#include "Second.h"
#include "Global.h"
First one;
Second two;
int main()
{
while(1){
one.F_method();
two.S_method();
}
}
Global.h
extern class First one;
extern class Second two;
First.cpp
#include "First.h"
#include <iostream>
#include "Global.h"
using namespace std;
First::First()
{
//Constructor
}
void First::F_method()
{
std::cout << two.S_Var << std::endl;
}
First.h
#ifndef First_h
#define First_h
class First
{
public:
First();
void F_method();
int F_Var = 66;
};
#endif
Second.cpp
#include "Second.h"
#include <iostream>
#include "Global.h"
using namespace std;
Second::Second()
{
//Constructor
}
void Second::S_method()
{
std::cout << one.F_Var << std::endl;
}
Second.h
#ifndef Second_h
#define Second_h
class Second
{
public:
Second();
void S_method();
int S_Var = 12;
};
#endif
你会得到什么错误? – NathanOliver
在成员函数'void First :: F_method()'中:错误:使用不完整的类'class Second'注意:'class Second'的前向声明 – PanCy
您需要在第二个中添加'#include“First.h”' .cpp和First.cpp中的#include“Second.h”。 –