2016-04-04 2 views
0

私はメインクラス "arm"を持っていますが、longまたはelbowのような多くの属性を持っていますが、属性として "hand"クラスのオブジェクトが1つあります。手は異なるメソッドと属性を持っているので、別のクラスとして作ることが重要です。他のオブジェクトの属性としてのオブジェクトC++

私の質問は、C++の別のクラスの属性としてオブジェクトを使用する方法ですか? ( - 私のMicrosoft Visual Studioを使用して)

クラスの手はhand.h

class hand 
{ 
private: 
     int number_of_fingers; 
public: 
     void handleSomthing(); 
} 

で、クラスのアームはarm.hの

#include "hand.h" 
class arm 
{ 
private: 
     float long; 
     int elbow; 
     hand right; 
} 

です

しかし、アームに "hand.h"を含めると、エラーが発生します。

エラーC2011:「手」:型「クラス」は新しい定義

私はhand.hを使用して作成し、それが動作するメインプログラム上のオブジェクトを使用しようと、それほど問題ではない場合私はクラスの手にあると思う。 OOPと - 私を学ぼうと

- 私は本当にあなたの助け

+0

エラーを見つけることができる最小限のコードを投稿できますか? http://stackoverflow.com/help/mcve – Guiroux

+0

https://en.wikipedia.org/wiki/Include_guard –

答えて

0

クラス宣言の最後にセミコロンを必要と感謝しています。

class hand { private: int number_of_fingers; public: void handleSomthing(); }; 

#include "hand.h" 
class arm { private: float long; int elbow; hand right; }; 
0

#include "hand.h" 

class arm 
{ 
private: 
    float length; 
    int elbow; 
    hand right; 
}; 

arm.hのhand.h

class hand 
{ 
private: 
    int number_of_fingers; 
public: 
    void handleSomthing(); 
}; 

あなたは、長い変数名を指定することはできません。

float long 

長いタイプである、あなたが名前を付ける必要がありますそれは長さ

float length 
+0

私の主なプログラム(main.cpp)に#include "hand.h"を書きましたが、 arm.hの最上位にあります。だから私はクラスの腕からオブジェクトを作成したときに私は "含まれて"ヘッダの2倍のhand.h 正しい方法は、armが書かれているファイルにのみhand.hをインクルードすることです。 回答ありがとうございました Jenn –

+0

ヘッダファイルの上にコンパイラフラグを付ける必要があります。そのため、複数回インクルードすることができます。 [ここ](http://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files)を参照してください。 –

関連する問題