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