查找函数不返回正确的值

时间:2011-11-28 14:11:08

标签: c++ map enums

是否无法填写这样的地图:

void Spel::Fill( void )
{
    int buildslist[] = {3,3,2,2,2,2,3,2,2,2,2,3,3,2,2,2,2,1,1,1,1,1};
    Building::buildings p;

    for( int i = Building::INDIGOK; i < Building::STADSHUIS; i++)
    {
        p = (Building::buildings) i;
        gebouwenMap[p] = buildslist[i];

    }
}

这会给所有0Building::buildings是包含一些建筑名称的枚举。 buildslist列出了有多少人可以加入该建筑物。

1 个答案:

答案 0 :(得分:1)

首先,没有足够的代码来提供实际答案。请改进您的问题,以便我们能够为您提供帮助。

其次,标题具有误导性“查找功能没有返回正确的值”。没有“查找”功能,也没有“返回值”,因为您显示的唯一功能返回void

现在已经解决了这个问题,让我试着帮助你:

    p = (Building::buildings) i;

这是从int到enum的转换。我认为这是糟糕的C ++(可能未定义,因为可能适用于某些编译器但不作为经验法则)。我想你必须在这里使用一个开关。

请用英文写代码。你是否想象如果你合作的人是日本人并且会用日语变量名来编写代码?即使项目是荷兰语,也要用英语编写代码,包括评论。

编辑:您可能希望在此处使用字符串而不是枚举。

尝试使用std::map<std::string, int>对您的建筑物名称进行编码而不是枚举,然后使用std::map::iterator进行迭代。