2013-05-23 10 views
12

मैं वर्तमान में शीर्ष-डाउन आरपीजी के लिए एक साधारण 2 डी टाइल इंजन बनाने पर एक ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं। किसी कारण से हालांकि मैं IntelliSense त्रुटिवेक्टर टेम्पलेट नहीं है?

vector is not a template

शब्द "वेक्टर" लाल के साथ रेखांकित किया है मिलता है। यह क्यों काम नहीं करता है? यह मुझे क्यों बता रहा है कि यह एक टेम्पलेट है, और इसका मतलब यह क्यों नहीं है कि कार्यक्रम काम नहीं करेगा?

#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 

त्रुटियाँ मैं (ऊपर इस हिस्से की त्रुटि से कोई संदेह नहीं है इन अंडे से कुछ) मिलती है:

  • त्रुटि 1 त्रुटि C2143: सिंटेक्स त्रुटि: लापता ';' पहले '<' c: \ उपयोगकर्ताओं \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 2 त्रुटि C4430 : गायब प्रकार विनिर्देशक - int माना जाता है। नोट: सी ++ का समर्थन नहीं करता डिफ़ॉल्ट-पूर्णांक c: \ vipar \ Users \ ड्रॉपबॉक्स \ कंप्यूटर
    विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो
    2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 3 त्रुटि C2238: अप्रत्याशित टोकन 'से पहले'; ' C: \ Users \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 4 त्रुटि C2143: सिंटेक्स त्रुटि: गायब ';' पहले '<' c: \ उपयोगकर्ताओं \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 5 त्रुटि C4430 : गायब प्रकार विनिर्देशक - int माना जाता है। नोट: सी ++ डिफ़ॉल्ट-int c का समर्थन नहीं करता है: \ users \ vipar \ dropbox \ computer
    विज्ञान \ प्रोग्रामिंग \ विजुअल स्टूडियो
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager.h 10 1 sfml-app

  • त्रुटि 6 त्रुटि सी 2238: अप्रत्याशित टोकन (') से पहले'; ' C: \ Users \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 7 त्रुटि C2065: 'textureList' : अघोषित पहचानकर्ता C: \ Users \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य Studio 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.cpp 22 1 sfml-ऐप

  • त्रुटि 8 त्रुटि C2143: वाक्यविन्यास त्रुटि: गायब ';' पहले '<' c: \ उपयोगकर्ताओं \ vipar \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • त्रुटि 9 त्रुटि C4430 : गायब प्रकार विनिर्देशक - int माना जाता है। नोट: सी ++ डिफ़ॉल्ट-int c का समर्थन नहीं करता है: \ users \ vipar \ dropbox \ computer
    विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो
    2012 \ projects \ sfml-app \ sfml-app \ imagemanager।एच 10 1 एसएफएमएल-एप

  • त्रुटि 10 त्रुटि सी 2238: अप्रत्याशित टोकन (') से पहले'; ' c: \ vipar \ Users \ ड्रॉपबॉक्स \ कंप्यूटर विज्ञान \ प्रोग्रामिंग \ दृश्य स्टूडियो 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ imagemanager.h 10 1 sfml-ऐप

  • 11 IntelliSense: वेक्टर एक टेम्पलेट नहीं है C: \ Users \ Vipar \ ड्रॉपबॉक्स \ कम्प्यूटर साइंस \ प्रोग्रामिंग \ दृश्य
    Studio 2012 \ परियोजनाओं \ sfml एप्लिकेशन के अंतर्गत \ sfml एप्लिकेशन के अंतर्गत \ ImageManager.h 10 2 sfml-ऐप

+0

आप इस का पालन करना चाहिए: http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-identifier – chris

+4

'एसटीडी: : वेक्टर ' – yngccc

+1

नाम जो अंडरस्कोर से शुरू होते हैं उसके बाद पूंजी पत्र (' _IMAGEMANAGER_H') और नाम जो लगातार दो अंडरस्कोर होते हैं, कार्यान्वयन के लिए आरक्षित होते हैं। उनका उपयोग न करें। –

उत्तर

21

vector से है std नेमस्पेस, इसलिए आपको निर्दिष्ट करने के लिए std:: का उपयोग करना होगा:

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

या आप एक using कथन का उपयोग कर सकते हैं:

using std::vector; 

vector<sf::Texture> textureList; 
+0

धन्यवाद। मैंने पहली टिप का इस्तेमाल किया जो इसे हल करता था। नामस्थान का उपयोग करने से शायद यह भी हल हो जाएगा। – OmniOwl

+0

ध्यान रखें कि हेडर फ़ाइलों में निर्देशों का उपयोग करने की अनुशंसा नहीं की जाती है। – Hiura

+0

#include hmfarimani

4

जब से मैं अपने कोड नमूने में किसी भी using बयान नहीं दिख रहा है, मैं बहुत यकीन है कि आप अपने vector घोषणा करने के लिए std:: जोड़ने के लिए है, इसलिए की तरह की जरूरत है कर रहा हूँ :

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

अन्य व्यक्ति ने एक से अधिक समाधान सूचीबद्ध किए हैं, इसलिए मैंने उसे स्वीकार कर लिया, हालांकि मैंने प्रयास के लिए भी आपका वोट दिया! : 3 – OmniOwl

+0

@ विपर कोई चिंता नहीं, आपको वह उत्तर चुनना चाहिए जिसने आपको सबसे ज्यादा मदद की। –

संबंधित मुद्दे