2013-05-23 11 views
12

W tej chwili staram się postępować zgodnie z samouczkiem dotyczącym tworzenia prostego mechanizmu płytki 2D dla odgórnych gier RPG. Z jakiegoś powodu, choć pojawia się błąd INTELLISENSEWektor to nie szablon?

vector is not a template

Słowo „wektor” jest podkreślone na czerwono. Dlaczego to nie działa? Dlaczego mówi mi, że jest to szablon i dlaczego program nie działa?

#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 

Błędy otrzymuję (bez wątpienia niektóre z tych tarło z błędem tej części wyżej):

  • Error 1 error C2143: błąd składni: Brakuje ';' przed '<' C: \ Users \ vipar skrzynki referencyjnej \ \ komputer \ \ nauka programowania visual studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Błąd 2 error C4430 : brak specyfikatora typu - int przyjęto. Uwaga: C++ nie obsługuje domyślnego-c: \ users \ vipar \ dropbox \ computer
    nauka \ programowanie \ studio wizualne
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Błąd 3 błąd C2238: nieoczekiwany token (y) poprzedzający ";" C: \ Users \ vipar \ Dropbox \ komputer programowanie nauka \ \ Visual Studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Błąd 4 error C2143: błąd składni: brakuje ";" przed '<' C: \ Users \ vipar skrzynki referencyjnej \ \ komputer \ \ nauka programowania visual studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • błąd 5 Błąd C4430 : brak specyfikatora typu - int przyjęto. Uwaga: C++ nie obsługuje domyślnego-c: \ users \ vipar \ dropbox \ computer
    nauka \ programowanie \ studio wizualne
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Błąd 6 błąd C2238: nieoczekiwany token (y) poprzedzający ";" C: \ Users \ vipar \ Dropbox \ komputer programowanie nauka \ \ Visual Studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Błąd 7 error C2065: 'textureList' : nielegalna identyfikator C: \ Users \ vipar \ Dropbox \ komputer programowanie nauka \ \ wizualnych studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.cpp 22 1 SFML-app

  • błąd 8 error C2143: błąd składni: brakujące ";" przed '<' C: \ Users \ vipar skrzynki referencyjnej \ \ komputer \ \ nauka programowania visual studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Błąd 9 error C4430 : brak specyfikatora typu - int przyjęto. Uwaga: C++ nie obsługuje domyślnego-c: \ users \ vipar \ dropbox \ computer
    nauka \ programowanie \ studio wizualne
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Błąd 10 błąd C2238: nieoczekiwany token (y) poprzedzający ";" C: \ Users \ vipar \ Dropbox \ komputer programowanie nauka \ \ Visual Studio 2012 \ Projects \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • 11 IntelliSense: Vector nie jest szablonem C: \ Users \ Vipar \ Dropbox \ informatykę \ Programowanie \ Wizualnej
    Studio 2012 \ Projects \ SFML-app \ SFML-app \ ImageManager.h 10 2 SFML-app

+0

należy stosować się do tego: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris

+4

'std: : wektor ' – yngccc

+1

Nazwy zaczynające się od znaku podkreślenia, po którym następuje duża litera (' _IMAGEMANAGER_H') oraz nazwy zawierające dwa kolejne podkreślenia, są zarezerwowane dla implementacji. Nie używaj ich. –

Odpowiedz

21

vector jest od Przestrzeń nazw std, więc musisz użyć std::, aby określić:

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

Albo można użyć using oświadczenie:

using std::vector; 

vector<sf::Texture> textureList; 
+0

Dziękuję. Użyłem pierwszej wskazówki, która ją rozwiązała. Korzystanie z przestrzeni nazw najprawdopodobniej również ją rozwiązało. – OmniOwl

+0

Należy pamiętać, że stosowanie dyrektyw nie jest zalecane w plikach nagłówkowych. – Hiura

+0

Nie zapomnij #include hmfarimani

4

Ponieważ nie widzę żadnych using oświadczenia w swojej próbki kodu, jestem całkiem pewny, że trzeba dodać std:: do deklaracji vector, tak jak :

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

Drugi facet wymienił więcej niż jedno rozwiązanie, więc przyjąłem jego, chociaż nie zgodziłem się też na twoje wysiłki! : 3 – OmniOwl

+0

@Vipar Bez obaw, powinieneś wybrać odpowiedź, która pomogła ci najbardziej. –

Powiązane problemy