2017-09-29 17 views
0

それぞれに独自のクラスを含む2つのcppファイルがあります。私のmain.cファイルで、これらのクラスのグローバル宣言を作成しました。すべてのヘルプは非常に高く評価されるだろうC++のexternエラー

In member function 'void First::F_method()': error: invalid use of incomplete type 'class Second' note: forward declaration of 'class Second'

:私は、グローバルクラスのインスタンスことを参照しようF_methodS_method内部の私のFirst.cppSecond.cppのエラーを取得しています!

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 "を第2に追加する必要があります.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"を追加する必要があります。