私はこのヘッダファイルを持っており、タイプItem
の変数を作成しようとしています。私は#include "Item.h"
をインクルードしましたが、まだ私はコンパイル時に両方のプライベート変数でunknown type name Item
エラーが発生します。C++クラスヘッダーが含まれていると、「不明な型」が存在するのはなぜですか?
#ifndef PLAYER_H
#define PLAYER_H
#include <vector>
#include "Item.h"
using std::vector;
class Player
{
public:
// constructor
Player(void);
// destructor
virtual ~Player(void);
private:
Item item;
std::vector <Item> inventory;
};
#endif /* PLAYER_H */
これはどうなりますか?私は
#ifndef ITEM_H
#define ITEM_H
#include <string>
#include "Player.h"
#include "GlobalDefs.h"
class Item {
public:
Item();
Item(gold_t v, std::string n);
virtual ~Item();
// Getter
inline virtual gold_t GetValue (void)
{
return value;
}
// Getter
inline virtual std::string GetName (void);
// Getter
virtual std::string GetItemText(void);
protected:
gold_t value;
std::string name;
};
#endif /* ITEM_H */
注:クラス本体の内部で定義されたメソッドは自動的にインラインになるため、 'GetValue'の' inline'キーワードは冗長です。また、0パラメータのパラメータリストを 'void 'としてマークすることも冗長です。 – emlai