2017-09-29 37 views
0

我有两个cpp文件,每个文件都包含它们自己的类。在我的main.c文件中,我创建了这些类的全局声明。我得到一个错误在我First.cppSecond.cppF_methodS_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 
+0

你会得到什么错误? – NathanOliver

+0

在成员函数'void First :: F_method()'中:错误:使用不完整的类'class Second'注意:'class Second'的前向声明 – PanCy

+2

您需要在第二个中添加'#include“First.h”' .cpp和First.cpp中的#include“Second.h”。 –

回答

0

当使用First::F_method()two.S_Var,你没有的Second完整定义。同样,在Second::S_method()中使用one.F_Var时,您没有First的完整定义。

您需要在Second.cpp中添加#include "First.h",在First.cpp中添加#include "Second.h"