2017-11-06 5 views
-2

混乱しているタイトルのため申し訳ありませんが、私は自分の質問を語る良い方法を考えることができませんでした。元のファイルを含めてファイル内でのみ宣言されるオブジェクトを使用してください

私はファイルFoo.cppで宣言されているクラスFooを持っています。

Foo.cppただし、ファイルBar.hがあり、クラスBarはオブジェクトFooの新しいインスタンスを作成しようとします。もちろん、私は未定義の識別子エラーを取得します。私はそれぞれの静的メンバーにアクセスする必要があるので、各ファイルに両方のヘッダーを含める必要があります。

この機能を実現する方法はありますか?

例: がfoo.h

#ifndef FOO_H 
#define FOO_H 

#include "Bar.h" 

class Foo 
{ 
public: 
    Foo() 
    { 
     _newNum = Bar::_num; 
    } 
private: 
    int _newNum 
}; 

Bar.h

#ifndef BAR_H 
#define BAR_H 

#include "Foo.h"  

class Bar 
{ 
public: 
    static int _num; 

private: 
    Foo f; // Error occurs here, Foo is undefined according to Foo.h. 
}; 

EDIT:非常に下手に書かれた質問にはAHHH申し訳ありません。私はとても疲れています。一定。

+0

クラス宣言の後にセミコロン( ';')がありませんか?なぜ 'Bar.h'に' Foo.h'を含めるのですか? – user0042

+3

'Foo'は、' Foo'を使う必要がある 'Bar'が' Bar.h'を含むのはなぜですか?これは単純に間違った方法だと思われる – UnholySheep

+0

私のエラーを訂正していただきありがとうございます – chickenwingding

答えて

1

あなたの例が示す限り、Foo.hがBar.hを#includeする必要はありません。 Bar.hの上部に

#include "Foo.h" 

を含み、ガードの下:修正するには

+0

あまり書かれていない質問に対する私の謝罪。私はそれを更新しました。 – chickenwingding

関連する問題