2011-01-12 9 views
0

私はおそらくここでは何とか愚かなことをしていることは知っていますが、何らかの理由で私のコードがコンパイルされず、理由がわかりません。C++で構造体のSTLリストを使う

#include <iostream> 
#include <list> //List class library 
#include <algorithm> //STL algorithms class library (find) 

using namespace std; 

list<int> numberlist; //Creates my list 

をそして私が作って試してみましたとして問題は、ために構造体のように表示されません -

#include <iostream> 
#include <list> 

//A queue for the working set 
//x,y co-ords of the square, path length so far 
struct square { 
int x; 
int y; 
int path_length; 
} square; 

list<square> workingset; 

は、私はまったく同じ方法でリストを作成するように見える他のコードを持っていますintのリストもあり、どちらもうまくいきません。

エラーが発生しました -

構文エラー: '' '<'の前に型指定子intが指定されていません。だから私はここで何信じられないほど愚かなことをしないのです

(私はリストを宣言しようとしていた行の両方)

? :3

+2

使用のstd ::リストをリストを宣言すること。 – DumbCoder

+0

誰かが私を助けることができますか? [1] [1] [C++における構造のSTLのリストから属性要素を変更]:http://stackoverflow.com/a/30798787/4959934 – Jonatan

答えて

3

listクラスがstd名前空間で定義されているので、あなたはこれを行うにはどちらか持っています構造体と変数の名前を指定します。

次のコードはコンパイルに失敗する必要があります。

struct square { 
int x; 
int y; 
int path_length; 
} square; 

square getSquare 
{ 
    return square(); 
} 

が代わりにこれを試してみてください:

struct square { 
int x; 
int y; 
int path_length; 
} aSquare; 

square getSquare 
{ 
    return square(); 
} 
+0

素晴らしい!ありがとうございました! :) – Eilidh

+0

(Duuuuuuuhhhr)*愚かな感じ* – Eilidh

+3

ハハハ....心配しないでください、それはいつも起こります:-) – Rafid

2

list<square> workingset;


の前でstd::を入れて、あなただけのusing namespace std;を含めることができますが、これはヘッダファイル内にある場合には、その良いアイデアではありません。あなたはの名前としてsquareを使用することはできません

std::list<square> workingset; 

、あるいはまた、この

using namespace std; 
list<square> workingset; 
+0

アイ、それはです小規模なプログラムで、名前空間stdを使用しています。 :)あなたの助けをありがとう! – Eilidh

0

、: