2014-02-27 73 views
0

我有一個叫Item.cpp類:類文件繼承的不是一類

class Item{ 
public: 
    int damage; 
    Item(int damage); 
    int GetDamage(); 
}; 

Item::Item(int damage) 
{ 
    this->damage = damage; 
} 

int Item::GetDamage() 
{ 
    return damage; 
} 

而且我想要的文件Sword.cpp繼承Item.cpp,像這樣:

class Sword: public Item { 

}; 

我儘管獲得以下錯誤: error not a class name or struct。我很困惑,因爲Item顯然是一個類,所以爲什麼我不允許Sword繼承Item?

+2

'Sword.cpp'包含哪些文件? – Brian

+0

沒什麼,這是整個文件。 – user3316633

回答

1

您需要Sword才能包含Item的聲明。通常在C++中,你將得到帶聲明的.h(頭文件)文件,然後帶有源文件的.cpp文件。

.h文件將包含在任何需要它們的地方; .cpp文件將被提供給編譯器(並將拉入.h文件)。

Item.h

#pragma once 

class Item { 
public: 
    int damage; 
    Item(int damage); 
    int GetDamage(); 
}; 

Item.cpp

#include <Item.h> 

Item::Item(int damage) { 
    this->damage = damage; 
} 

int Item::GetDamage() { 
    return damage; 
} 

Sword.h

#pragma once 
#include <Item.h> 

class Sword: public Item { 
}; 

Sword.cpp

#include <Sword.h> 

(到目前爲止,空至於代碼您提供)

然後您可以編譯Item.cppSword.cpp

+0

不要忘記標題中包含警衛(ifndef或pragma一次)。 http://en.wikipedia.org/wiki/Include_guard –

+0

是的,謝謝@ AdamD.Ruppe。 –

+0

謝謝,我沒有意識到我也需要使用頭文件。我的劍文件也是空的,我發佈的代碼就是整個文件的內容,所以這個小碎片是沒有必要的......但是再次感謝! – user3316633