ページ 11

構文エラー : ';' が '<' の前にありません。

Posted: 2012年8月05日(日) 11:52
by LisetteLander
vectorを使用し始めたら構文エラーが出始めたのですが
どこの行が悪いのかわかりません。
vectorは他のファイルを作成する時に同じ構文でエラーがでませんでした。
どうすれば以下のエラーが解決するでしょうか?

コード:

MapObjectListItem.h(13): error C2143: 構文エラー : ';' が '<' の前にありません。
MapObjectListItem.h(13): error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
MapObjectListItem.h(13): error C2238: ';' の前に無効なトークンがあります。
HitBox.h,HitCircle.h,HitLine.hはHit.hをインクルードします。

MapObjectListItem.h

コード:

#ifndef DEF_MapObjectListItem
#define DEF_MapObjectListItem
//配置オブジェクトを設定します。
#include <vector>
#include "Hit.h"
#include "Object.h"
#include "Define.h"

class CMapObjectListItem : public CObject{
private:
	int ObjectID;

	vector<CHit*> HitArea;
public:
	void SetObjectID(int);

	void AddHitArea(CHit*);
};
#endif
MapObjectListItem.cpp

コード:

#include "MapObjectListItem.h"
#include "HitBox.h"
#include "HitCircle.h"
#include "HitLine.h"

void CMapObjectListItem::SetObjectID(int a){}

void CMapObjectListItem::AddHitArea(CHit* tmpHitArea){}

Re: 構文エラー : ';' が '<' の前にありません。

Posted: 2012年8月05日(日) 12:03
by AliceCoder
おそらくstd::が抜けているのが原因と思われます。
stdという名前空間に含まれているのでstd::vector<int> name;みたいに書かないといけないはずです
教科書などではusing namespace std;を最初にかけば次からstd::を省略できると書いてあります
using namespace std;を使う前に加えればおそらくエラーはなくなるはずです

Re: 構文エラー : ';' が '<' の前にありません。

Posted: 2012年8月05日(日) 15:19
by LisetteLander
うああ、それでした!
STL使い慣れてないのでusingなんて発想がなかったです。
ありがとうございました!

Re: 構文エラー : ';' が '<' の前にありません。

Posted: 2012年8月05日(日) 17:50
by naohiro19
using namespace std;
とは
「std名前空間を使うので省略してください」というプリプロセッサです。

Re: 構文エラー : ';' が '<' の前にありません。

Posted: 2012年8月07日(火) 07:54
by beatle
ちなみにヘッダファイルに
using namespace std;
などとusingを使うのはテロですのでやめましょう。
ヘッダファイル内では常にstd::を使います。

*なぜテロなのかというと、std名前空間とは関係ないはずのヘッダを読み込んだだけでstd内の名前が全部漏洩してしまい、意図しない名前の衝突が発生しやすくなるからです。