Vector is geen sjabloon?

Ik probeer momenteel een tutorial te volgen over het maken van een eenvoudige 2D-tegelengine voor top-down RPG’s. Om de een of andere reden krijg ik echter de intellisense-fout

vector is not a template

Het woord ‘vector’ is rood onderstreept. Waarom werkt dit niet? Waarom vertelt het me dat het een sjabloon is, en waarom werkt het programma niet?

#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

Fouten die ik krijg (ongetwijfeld komen sommige van deze voort uit de fout van dit deel hierboven):

  • Fout 1 fout C2143: syntaxisfout: ontbrekende ‘;’ voor ‘<‘ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 2 fout C4430: ontbrekende typespecificatie – int verondersteld. Opmerking: C++ biedt geen ondersteuning voor standaard-int c:\users\vipar\dropbox\computer
    wetenschap\programmering\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 3 fout C2238: onverwachte token(s) voorafgaand aan ‘;’ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 4 fout C2143: syntaxisfout: ontbrekende ‘;’ voor ‘<‘ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 5 fout C4430: ontbrekende typespecificatie – int verondersteld. Opmerking: C++ ondersteunt standaard-int c:\users\vipar\dropbox\computer
    . niet
    wetenschap\programmering\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 6 fout C2238: onverwachte token(s) voorafgaand aan ‘;’ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 7 fout C2065: ‘textureList’: niet-aangegeven id c:\users\vipar\dropbox\computer science\programming\visual
    studio 2012\projects\sfml-app\sfml-app\imagemanager.cpp 22 1 sfml-app

  • Fout 8 fout C2143: syntaxisfout: ontbrekende ‘;’ voor ‘<‘ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 9 fout C4430: ontbrekende typespecificatie – int verondersteld. Opmerking: C++ biedt geen ondersteuning voor standaard-int c:\users\vipar\dropbox\computer
    wetenschap\programmering\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • Fout 10 fout C2238: onverwachte token(s) voorafgaand aan ‘;’ c:\users\vipar\dropbox\computer science\programming\visual studio
    2012\projects\sfml-app\sfml-app\imagemanager.h 10 1 sfml-app

  • 11 IntelliSense: vector is geen sjabloon c:\Users\Vipar\Dropbox\Computer Science\Programming\Visual
    Studio 2012\Projecten\sfml-app\sfml-app\ImageManager.h 10 2 sfml-app


Antwoord 1, autoriteit 100%

vectorkomt uit de stdnaamruimte, dus je moet std::gebruiken om het volgende op te geven:

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

Of je kunt een usingstatement gebruiken:

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

Antwoord 2, autoriteit 14%

Aangezien ik geen using-instructies in je codevoorbeeld zie, ben ik er vrij zeker van dat je std::moet toevoegen aan je vectordeclaratie, zoals zo:

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

Other episodes