2013-05-23 4 views
12

Ich versuche gerade, ein Tutorial über die Erstellung einer einfachen 2D-Kachel-Engine für Top-Down-RPGs zu folgen. Aus irgendeinem Grund habe ich den Intellisense FehlerVektor ist keine Vorlage?

vector is not a template

Das Wort „Vektor“ wird mit rot unterstrichen. Warum funktioniert das nicht? Warum sagt es mir, dass es eine Vorlage ist, und warum bedeutet das, dass das Programm nicht funktioniert?

#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 

Fehler ich (ohne Zweifel einige dieser Laich aus dem Fehler dieses Teils oben):

  • Fehler 1 Fehler C2143: Syntaxfehler: fehlen; vor '<' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • Fehler 2 Fehler C4430 : fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht den Standardwert -int c: \ Benutzer \ vipar \ dropbox \ computer Wissenschaft
    2012 \ projekte \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Fehler 3 Fehler C2238: unerwartete Token vor ';' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • Fehler 4 Fehler C2143: Syntaxfehler: fehlende ';' vor '<' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • Fehler 5 Fehler C4430 : fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht den Standardwert -int c: \ Benutzer \ vipar \ dropbox \ computer Wissenschaft
    2012 \ projekte \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Fehler 6 Fehler C2238: Unerwarteter (n) Token vor ';' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • Fehler 7 Fehler C2065: 'textureList' : nicht deklarierter Bezeichner c: \ Benutzer \ VIPAR \ Dropbox \ Programmierung Wissenschaft \ Computer \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.cpp 22 1 SFML-App

  • Fehler 8 Fehler C2143: Syntaxfehler: fehlt ';' vor '<' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • Fehler 9 Fehler C4430 : fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht den Standardwert -int c: \ Benutzer \ vipar \ dropbox \ computer science \ programing \ visual studio 2012 \ projekte \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Fehler 10 Fehler C2238: Unerwartetes Token (s) vor ';' c: \ users \ VIPAR \ Dropbox \ Informatik \ Programmierung \ Visual Studio 2012 \ projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-App

  • 11 IntelliSense: Vektor ist keine Vorlage c: \ Benutzer \ Vipar \ Dropbox \ Informatik \ Programming \ Visual
    Studio 2012 \ Projects \ SFML-app \ SFML-app \ ImageManager.h 10 2 SFML-App

+0

Sie diesen auch einhalten sollte: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris

+4

'std: : Vektor ' – yngccc

+1

Namen, die mit einem Unterstrich beginnen, gefolgt von einem Großbuchstaben (' _IMAGEMANAGER_H') und Namen, die zwei aufeinanderfolgende Unterstriche enthalten, sind für die Implementierung reserviert. Benutze sie nicht. –

Antwort

21

vector ist aus Der std Namespace, also müssen Sie std:: verwenden, um anzugeben:

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

Oder Sie können eine using Anweisung:

using std::vector; 

vector<sf::Texture> textureList; 
+0

Danke. Ich habe den ersten Tipp benutzt, der es gelöst hat. Mit dem Namespace wäre es wahrscheinlich auch gelöst worden. – OmniOwl

+0

Beachten Sie, dass die Verwendung von Direktiven in Headerdateien nicht empfohlen wird. – Hiura

+0

nicht vergessen #include hmfarimani

4

Da ich keine using Aussagen in Ihrem Codebeispiel sehen, ich bin ziemlich sicher, dass Sie std:: auf Ihre vector Erklärung hinzufügen müssen, wie so :

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

Der andere Typ aufgeführt mehr als eine Lösung, so akzeptierte ich seine, obwohl ich Ihre auch für die Anstrengung abgestimmt! : 3 – OmniOwl

+0

@Vipar Keine Sorge, Sie sollten die Antwort auswählen, die Ihnen am meisten geholfen hat. –