2012-06-06 20 views
6

मैं अपने कोड भर घोषणा (या इसी तरह)नक्शा एसटीडी पर :: नक्शा अमान्य टेम्पलेट तर्क <std :: स्ट्रिंग, स्टॉक *> और शेयरों

std::map< std::string, Stock*> &stocks; 

है। ग्रहण इसे पसंद नहीं करता है और एक "अवैध टेम्पलेट तर्क" त्रुटि उत्पन्न करता है।

स्टॉक घोषित किया जाता है के रूप में:

class Stock { 

public: 
    Stock(std::string, qbbo::Financial_status_indicator, qbbo::Security_class, 
      qbbo::Current_trading_state, 
      qbbo::Market_category, qbbo::Reg_sho_action); 
    ~Stock(); 
    void setFinancialStatusIndicator(qbbo::Financial_status_indicator financialStatusIndicator); 
    void setSecurityClass(qbbo::Security_class securityClass); 
    void setCurrentTradingState(qbbo::Current_trading_state tradingState); 
    void setMarketCategory(qbbo::Market_category marketCategory); 
    void setREGShoAction(qbbo::Reg_sho_action regSHOAction); 
    bool isStockTrading(); 

    private: 
    enum StockState { 
     STOCK_STATE_OK, STOCK_STATE_UNKNOWN, STOCK_STATE_UNEXPECTED_CHARACTERISTIC 
    }; 

    std::string name; 
    int inventory; 
    StockState currentState; 

    // Expected values initialised in constructor 
    qbbo::Financial_status_indicator expectedFinancialStatusIndicator; 
    qbbo::Security_class expectedSecurityClass; 
    qbbo::Current_trading_state expectedCurrentTradingState; 
    qbbo::Market_category expectedMarketCategory; 
    qbbo::Reg_sho_action expectedRegSHOAction; 

    // Actual values as set by messages 
    qbbo::Financial_status_indicator financialStatusIndicator; 
    qbbo::Security_class securityClass; 
    qbbo::Current_trading_state currentTradingState; 
    qbbo::Market_category marketCategory; 
    qbbo::Reg_sho_action regSHOAction; 

    void nextState(); 
}; 

मैं इस घोषणा के बारे में क्या अमान्य नहीं देख सकते हैं और यह ठीक संकलित करता है। क्या मुझे कुछ याद आ रहा है और ग्रहण पकड़ रहा है?

लघु स्व

#include <string> 
#include <map> 

#include "stock.h" 

int main() { 
    std::map<std::string, Stock*> stocks; 
} 
+0

क्या आपकी कक्षा 'मानचित्र' का उपयोग करने से पहले घोषित की गई है? – Pubby

+0

जब तक आप अपना संदर्भ सही ढंग से प्रारंभ करते हैं, तब तक आपके कोड AFAICT में कुछ भी गलत नहीं है। मैंने 'स्टॉक' के कोड को नहीं देखा, क्योंकि यह शायद अप्रासंगिक है: चूंकि आप पॉइंटर्स संग्रहीत कर रहे हैं, यहां तक ​​कि एक सरल आगे की घोषणा भी पर्याप्त है (देखें [यहां] (http://ideone.com/Vzg2w))। आपको अधिक जानकारी प्रदान करना होगा, आदर्श रूप से एक [एसएससीसीई] (http://homepage1.nifty.com/algafield/sscce.html)। –

+0

क्या आप 'map' का उपयोग करने से पहले 'std :: string' घोषित किया गया है? –

उत्तर

2

पता चला ग्रहण त्रुटि होने के लिए निहित सही उदाहरण। एक नई परियोजना बनाना और Eclipse CDT C++11/C++0x support चरणों को फिर से पालन करना इसे क्रमबद्ध करें।

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