C ++映射模板参数无效

时间:2018-03-09 23:54:40

标签: c++ templates dictionary stdmap invalid-argument

我正在尝试创建一个映射,其值是我在另一个文件中定义的类;即FoodItemLookup。但是,C ++给了我错误:

  

模板参数1无效

我发现这很奇怪,因为我没有使用任何模板。

如果有人能向我解释我做错了什么,我将不胜感激。我不认为我可以发布所有代码,但这里有相关的片段:

尝试制作地图:

std::map<string, FoodItemLookup> foodCatalogue;

FoodItemLookup.h文件的简要概述:

#ifndef FOODITEMLOOKUP
#define FOODITEMLOOKUP

#include <string>

class FoodItemLookup
{
  private:
  ...

  public:

  //constructor
  FoodItemLookup(std::string upc, int shelfLife, std::string name);

  //copy constructor
  FoodItemLookup(const FoodItemLookup &other);

  //destructor
  ~FoodItemLookup();

  ...
);

#endif

1 个答案:

答案 0 :(得分:1)

您的第一个模板参数中的std::应该有string个:

std::map<std::string, FoodItemLookup> foodCatalogue;
  

&#34;我发现这很奇怪,因为我没有使用任何模板。&#34;

实际上std::map使用模板。这就是为什么在实例化std::string时需要在FoodItemLookup之间传递两种类型(此处为<>std::map)的原因。

More information on templates.