2012-06-06 21 views
6

que tienen la declaración (o similar)argumentos de plantilla no válidos en el mapa std :: mapa <std :: string, existencia *> & Stocks

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

lo largo de mi código. A Eclipse no le gusta esto y produce un error de "argumentos de plantilla no válidos".

archivo se declara como:

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

no puedo ver qué es inválida acerca de esta declaración y que compila bien. ¿Hay algo que me falta y Eclipse está atrapando?

Short auto contenida Ejemplo correcta

#include <string> 
#include <map> 

#include "stock.h" 

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

¿Se ha declarado su clase antes de usar 'map'? – Pubby

+0

Siempre que inicialice correctamente su referencia, no hay nada de malo en su código AFAICT. No miré el código de 'Stock', ya que probablemente sea irrelevante: ya que estás almacenando punteros, incluso una simple declaración directa es suficiente (mira [aquí] (http://ideone.com/Vzg2w)). Tendrá que proporcionar más información, idealmente un [SSCCE] (http://homepage1.nifty.com/algafield/sscce.html). –

+0

¿Está 'std :: string' declarado antes de usar' map'? –

Respuesta

Cuestiones relacionadas