2012-01-18 67 views
-1

這是我的頭文件:C++「的地圖是不是一個類型的」錯誤

/** 
* Job.h 
* 
**/ 

#ifndef JOB_ 
#define JOB_ 

#include <map> 
#include <string> 
#include <algorithm> 
#include <cstdlib> 
#include <iomanip> 
#include <vector> 

class Job { 

private: 

int resourceId; 
int inputRepresentation; 
int outputRepresentation; 

//Effects associative array 
//Maps an effect to a map of it's attributes 
//effectsMap[effect][attribute]=value 
map< std::string, map<std::string, int> > *effectsMap; 

public: 

//constructors 
Job(); 
Job(int resId, int inputRep, int outputRep); 

//destructor 
virtual ~Job(); 


//getters 
int getInputRepresentation() const; 
int getOutputRepresentation() const; 
int getResourceId() const; 


//setters 
void setInputRepresentation(int inputRepresentation); 
void setOutputRepresentation(int outputRepresentation); 
void setResourceId(int resourceId); 
void setRepresentations(std::map *rep); 

void addEffect(std::string effect, map<std::string, int> attributesMap); 



}; 


#endif 

現在II將切入正題:

void setRepresentations(std::map *rep) 

提供了以下錯誤:「地圖是不是鍵入「 這很奇怪,因爲它看起來像eclipse管理正確鏈接到STL庫... 而且我確實有一個私人領域的地圖,似乎很好。

任何想法?

回答

7

你需要指定完整的類型的地圖,包括< >裏面的類型:喜歡的東西:

void setRepresentations(std::map<std::string, int> *rep); 
3

您錯過了地圖前面的std::

3

std:map模板,而不是類型。一個類型將是std::map<std::string, int>

setRepresentations應該做什麼?爲什麼簽名沒有完全指定它應該使用什麼類型的map,就像addEffect一樣?

+1

+1表示「..是*模板*,不是*類型*」。 – 2012-01-18 17:15:38

2

你需要指定地圖的命名空間,所以它應該是std::map

相關問題