C ++“map不是类型”错误

时间:2012-01-18 00:26:20

标签: 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

现在我会谈到这一点:

void setRepresentations(std::map *rep)

给出以下错误:“地图不是类型” 这很奇怪,因为它看起来像eclipse设法正确链接到stl库... 而且我确实有一个私人的地图领域似乎很好。

有什么想法吗?

4 个答案:

答案 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