2011-01-12 7 views
0

Ich weiß, ich mache hier wahrscheinlich etwas unverzeihlich dumm, aber aus irgendeinem Grund wird mein Code nicht kompilieren und ich bin mir nicht sicher warum.Verwendung einer STL-Liste eines Struct in C++

#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; 

Ich habe einen anderen Code, der eine Liste auf genau die gleiche Art und Weise zu erstellen erscheint -

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

using namespace std; 

list<int> numberlist; //Creates my list 

Und das Problem scheint nicht wegen der Struktur zu sein, wie ich versucht habe, eine zu machen Liste von Ints auch, und es wird auch nicht funktionieren.

Die Fehler Ich erhalte sind -

Syntaxfehler: fehlen; vor '<' und fehlender Typspezifizierer - int angenommen.

(beide auf der Linie, in der ich eine Liste zu erklären versuchen)

Also, was unglaublich dumme Sache bin ich hier fehle? : 3

+2

Verwendung std :: list eine Liste zu erklären. – DumbCoder

+0

Kann mir jemand helfen? [Ändern aus einer Liste von STL einer Struktur ein Attribut Element in C++] [1] [1]: http://stackoverflow.com/a/30798787/4959934 – Jonatan

Antwort

3

Die list Klasse im std Namensraum definiert ist, so müssen Sie entweder das tun:

std::list<square> workingset; 

Oder diese

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

Fantastisch! Vielen Dank! :) – Eilidh

+0

(Duuuuuuuuhhhr) * fühlt sich dumm * – Eilidh

+3

Hahaha .... mach dir keine Sorgen, es passiert immer :-) – Rafid

2

Setzen std:: vor dem list<square> workingset;


könnten Sie einfach using namespace std; enthalten, aber es ist nicht so gute Idee, wenn diese in einer Header-Datei ist.

+0

Ja, es ist ein klitzekleines Programm, das namespace std benutzt; sollte in Ordnung sein :) Danke für Ihre Hilfe! – Eilidh

0

Auch Sie nicht square als Namen verwenden können die Struktur sowie der Name einer Variablen.

Der folgende Code sollte nicht kompilieren:

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

square getSquare 
{ 
    return square(); 
} 

dieses Versuchen Sie stattdessen:

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

square getSquare 
{ 
    return square(); 
}