这是我的头文件:
/**
* 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
现在我会谈到这一点:
void setRepresentations(std::map *rep)
给出以下错误:“地图不是类型” 这很奇怪,因为它看起来像eclipse设法正确链接到stl库... 而且我确实有一个私人的地图领域似乎很好。
有什么想法吗?
答案 0 :(得分:7)
您需要指定地图的完整类型,包括< >
内的类型:类似于:
void setRepresentations(std::map<std::string, int> *rep);
答案 1 :(得分:3)
您错过了地图前面的std::
。
答案 2 :(得分:3)
std:map
是模板,而不是类型。类型为std::map<std::string, int>
。
setRepresentations
到底应该做什么?为什么签名没有完全指定它应该使用的map
类型,就像addEffect
那样?
答案 3 :(得分:2)
您需要为map指定名称空间,因此它应该是std::map
。