2016-04-04 25 views
0

"Arm" ana sınıfına sahibim, uzun veya dirsek gibi birçok özniteliği var, ancak "el" sınıfının bir nesnesi olan bir öznitelik var. Elin farklı yöntemleri ve özellikleri vardır, bu yüzden onu farklı bir sınıf yapmak önemlidir.Başka bir nesnenin özniteliği olarak nesne C++

Sorumum, bir nesnenin C++ 'da başka bir sınıfın niteliği olarak nasıl kullanılacağıdır?

sınıf eli hand.h

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

üzerinde

ve sınıf kol arm.h

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

olduğu (Microsoft Visual Studio kullanarak Özür)

Ama kol üzerinde "hand.h" eklediğimde

diyerek bir hata oluştu

hata C2011: 'el': türü 'sınıf' yeni tanımı

Ben hand.h kullanmak ve oluşturmak ve işe yarıyor ana programda nesneleri kullanmayı deneyin, bu yüzden sorun değilse sınıfta sanırım. Özür nesneye dayalı programlama ve EDECEĞİM öğrenmeye çalışıyorum

gerçekten

+0

Hatayı bulabileceğimiz bir minimum kod gönderir misiniz? http://stackoverflow.com/help/mcve – Guiroux

+0

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

cevap

0

sınıf bildirimleri sonunda bir noktalı virgül ihtiyacı yardımın için teşekkür ederiz.

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

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

arm.h

#include "hand.h" 

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

hand.h

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

Uzun bir değişken ismi olamaz:

float long 

uzun bir türüdür sen isimlendirmeliyim uzunluk

float length 
+0

Anlaşılan hata, ana programda (main.cpp) #include "hand.h" yazdığımdı. ve kolun üstünde. Bu yüzden, sınıf kolundan bir nesne oluşturduğumda, iki kez üstbilgi eline "dahil" oldum. Doğru yol, yalnızca kolun yazıldığı dosyaya hand.h eklemektir. Yanıtladığınız için teşekkürler: Jenn –

+0

Çok sayfalı olarak ekleyebilmeniz için, başlık dosyanızın üstüne derleyici bayrağı koymanız gerekir. Bakınız [burada] (http://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files) –

İlgili konular