2013-05-23 31 views
12

Şu anda yukarıdan aşağı RPG'ler için basit bir 2D çini motoru oluşturma konusunda bir öğretici takip etmeye çalışıyorum. Nedense olsaVektör bir Şablon değil mi?

vector is not a template

kelime "vektör" kırmızı ile altı çizilir intellisense hatayı olsun. Bu neden çalışmıyor? Neden bir şablon olduğunu ve neden programın işe yaramayacağını anlatıyor?

#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 

Hatalar I (yukarıdaki bu parçanın hatadan bu yumurtasına bazı şüphesiz) olsun:

  • Hata 1 hata C2143: sözdizimi hatası: eksik ';' '<' c önce: \ kullanıcılar \ visual studio \ vipar \ dropbox'ı \ bilgisayar bilimi \ programlama 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Hata 2 hata C4430 : eksik tür belirtici - int varsayıldı. Not: C++, varsayılan int'yi desteklemez c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Hata 3 hata C2238: ';' öncesinde beklenmeyen belirteçler belirti. c: visual studio \ \ dropbox'ı \ bilgisayar bilimi \ programlama \ users \ vipar 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Hata 4 hata C2143: sözdizimi hatası: eksik ';' '<' c önce: \ kullanıcılar \ visual studio \ vipar \ dropbox'ı \ bilgisayar bilimi \ programlama 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Hata 5 hata C4430 : eksik tür belirtici - int varsayıldı. Not: C++, varsayılan int'yi desteklemez c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Hata 6 hata C2238: ';' öncesindeki beklenmedik belirteci/işaretleri c: visual studio \ \ dropbox'ı \ bilgisayar bilimi \ programlama \ users \ vipar 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Hata 7 hata C2065: 'textureList' : bildirilmemiş tanıtıcısı c: visual stüdyo 2012 \ projelerde \ \ dropbox'ı \ bilgisayar bilimi \ programlama \ users \ vipar \ SFML-app \ SFML-app \ imagemanager.cpp 22 1 SFML-app

  • hata 8 hata C2143: sözdizimi hatası: ';' eksik '<' c önce: \ kullanıcılar \ visual studio \ vipar \ dropbox'ı \ bilgisayar bilimi \ programlama 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • Hata 9 hata C4430 : eksik tür belirtici - int varsayıldı. Not: C++ varsayılan int'yi desteklemez c: \ users \ vipar \ dropbox \ computer
    science \ programming \ visual studio
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • Hata 10 hata C2238: ';' den önce beklenmedik belirteç (ler). c: visual studio 2012 \ projeler \ SFML-app \ SFML-app \ imagemanager.h 10 1 SFML-app

  • 11 IntelliSense \ \ dropbox'ı \ bilgisayar bilimi \ programlama \ users \ vipar: vektör bir şablonu değil c: Görsel
    Studio 2012 Projeleri \ SFML-app \ SFML-app \ ImageManager.h 10 2 SFML-app

+0

buna bağlı kalmalıdır: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris

+4

'std: : vektör ' – yngccc

+1

Büyük harfle başlayan alt harflerle başlayan isimler (' _IMAGEMANAGER_H') ve iki ardışık altçizgi içeren isimler uygulamaya ayrılmıştır. Onları kullanma. –

cevap

21

vector dan \ \ \ Users Vipar \ Dropbox \ Bilgisayar Bilimleri \ \ Programlama std ad alanı, bu nedenle belirtmek için std:: kullanmanız gerekir:

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

Yoksa using deyimi kullanabilirsiniz: Ben senin kod örneğinde herhangi using ifadeleri görmüyorum, ben bunu gibi, vector ilanına std:: eklemem gerekiyor eminim

using std::vector; 

vector<sf::Texture> textureList; 
+0

Teşekkürler. Çözdüğüm ilk ipucu kullandım. İsim alanını kullanmak büyük olasılıkla çözdü. – OmniOwl

+0

Başlık dosyalarında yönergelerin kullanılmasının önerilmez. – Hiura

+0

#include'yi unutma hmfarimani

4

:

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

Diğer adam birden fazla çözüm listeledi, ben de onun için kabul ettim, oysa siz de çabalarınız için oy verdim! : 3 – OmniOwl

+0

@Vipar Endişelenmeyin, size en çok yardımcı olan cevabı seçmelisiniz. –