2012-06-06 3 views
6

Ich habe die Erklärung (oder ähnlich)Ungültige Vorlage Argumente auf der Karte std :: map <std :: string, Stock *> & Aktien

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

in meinem Code. Eclipse mag dies nicht und erzeugt einen Fehler "Ungültige Vorlagenargumente".

Stock ist erklärt, wie:

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(); 
}; 

ich nicht was für ungültig zu dieser Erklärung sehen kann und es kompiliert in Ordnung. Gibt es etwas, das ich vermisse und Eclipse fängt?

Short Self Contained Correct Beispiel

#include <string> 
#include <map> 

#include "stock.h" 

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

Wird Ihre Klasse deklariert, bevor Sie 'map' verwenden? – Pubby

+0

Solange Sie Ihre Referenz korrekt initialisieren, ist Ihr Code AFAICT nicht falsch. Ich habe mir den Code von 'Stock' nicht angeschaut, da dieser wahrscheinlich irrelevant ist: Da du Zeiger speicherst, genügt sogar eine einfache Vorwärtsdeklaration (siehe [hier] (http://ideone.com/Vzg2w)). Sie müssen weitere Informationen angeben, idealerweise ein [SSCCE] (http://homepage1.nifty.com/algafield/sscce.html). –

+0

Wird 'std :: string' deklariert, bevor Sie' map' verwenden? –

Antwort

2

stellte sich heraus, eine Sonnenfinsternis Fehler sein. Erstellen Sie ein neues Projekt und folgen Sie den Schritten Eclipse CDT C++11/C++0x support sortiert es.