C++ C++&引用;“地图不是一种类型”;错误

C++ C++&引用;“地图不是一种类型”;错误,c++,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 in

这是我的头文件:

/**
 * 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
给出以下错误:“映射不是类型” 这很奇怪,因为eclipse似乎成功地链接到stl库。。。 我有一个私人的地图区域,看起来不错


有什么想法吗?

您缺少地图前面的
std:

std:map
是一个模板,而不是类型。类型应该是
std::map


setRepresentations
到底应该做什么?为什么签名没有完全指定它应该使用的
映射的类型,就像
addEffect
那样?

您需要指定映射的完整类型,包括
中的类型:类似于:

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

您需要为map指定名称空间,因此它应该是
std::map

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