2013-05-23 15 views
12

Attualmente sto provando a seguire un tutorial su come creare un semplice motore 2D per i giochi di ruolo top-down. Per qualche ragione, anche se ho l'errore intellisenseIl vettore non è un modello?

vector is not a template

La parola "vettore" è sottolineato con il rosso. Perché non funziona? Perché mi sta dicendo che è un modello e perché il programma non funziona?

#ifndef _IMAGEMANAGER_H 
#define _IMAGEMANAGER_H 

#include <vector> 
#include <SFML\Graphics.hpp> 

class ImageManager 
{ 
private: 
    vector<sf::Texture> textureList; 

public: 
    ImageManager(); 
    ~ImageManager(); 

    void AddTexture(sf::Texture& texture); 
    sf::Texture& GetTexture(int index); 
}; 
#endif 

errori ottengo (senza dubbio alcune di queste uova dall'errore di questa parte sopra):

  • errore 1 errore C2143: errore di sintassi: manca ';' prima '<' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • errore 2 Errore C4430 : specificatore di tipo mancante - int assunto. Nota: C++ non supporta default-int c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Errore errore 3 C2238: token imprevisti precedenti ';' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Errore 4 Errore C2143: errore di sintassi: mancante ';' prima '<' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • errore 5 Errore C4430 : specificatore di tipo mancante - int assunto. Nota: C++ non supporta default-int c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Errore 6 errore C2238: token imprevisti precedenti ';' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • errore 7 Errore C2065: 'textureList' : identificatore non dichiarato C: \ Users \ vipar \ set \ informatica \ programmazione \ visive Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.cpp 22 1 SFML-app

  • errore 8 errore C2143: errore di sintassi: mancante ';' prima '<' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Errore 9 Errore C4430 : specificatore di tipo mancante - int assunto. Nota: C++ non supporta default-int c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Errore 10 errore C2238: token imprevisti precedenti ';' C: \ Users \ vipar \ set \ informatica \ programmazione \ Visual Studio 2012 \ progetti \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • 11 IntelliSense: vettore non è un modello C: \ Users \ vipar \ Dropbox \ Computer Science \ Programmazione \ visivo
    Studio 2012 \ Projects \ SFML-app \ SFML-app \ ImageManager.h 10 2 SFML-app

+0

Si dovrebbe aderire a questa: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris

+4

'std: : vettore ' – yngccc

+1

I nomi che iniziano con un trattino basso seguito da una lettera maiuscola (' _IMAGEMANAGER_H') e i nomi che contengono due caratteri di sottolineatura consecutivi sono riservati all'implementazione. Non li usano –

risposta

21

vector da lo spazio dei nomi std, quindi è necessario utilizzare std:: per specificare:

std::vector<sf::Texture> textureList; 

Oppure si può utilizzare un using dichiarazione:

using std::vector; 

vector<sf::Texture> textureList; 
+0

Grazie. Ho usato il primo suggerimento che l'ha risolto. L'utilizzo dello spazio dei nomi avrebbe probabilmente risolto anche questo. – OmniOwl

+0

Ricordare che l'uso di direttive non è raccomandato nei file di intestazione. – Hiura

+0

non dimenticare #include hmfarimani

4

Dato che io non vedo nessun using dichiarazioni nel codice di esempio, sono abbastanza sicuro che è necessario aggiungere al vostro std:: dichiarazione vector, in questo modo :

std::vector<sf::Texture> textureList; 
+0

L'altro ragazzo ha elencato più di una soluzione, quindi ho accettato il suo, anche se ho votato anche tu per lo sforzo! : 3 – OmniOwl

+0

@Vipar Non preoccuparti, dovresti scegliere la risposta che ti ha aiutato di più. –

Problemi correlati