C++ 查找函数不';t返回正确的值

C++ 查找函数不';t返回正确的值,c++,map,enums,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;

不可能像这样填充地图:

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

    }
}
void Spel::Fill(void)
{
int buildslist[]={3,3,2,2,2,2,3,2,2,3,3,2,2,2,2,2,2,2,1,1,1};
建筑物::建筑物p;
对于(inti=Building::INDIGOK;i

这将给出所有
0
<代码>建筑::建筑
是带有一些建筑名称的枚举。
buildslist
是可以加入该建筑的人数列表。

首先,没有足够的代码给出实际答案。请改进您的问题,以便我们能够适当地帮助您

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

现在问题解决了,让我来帮你:

    p = (Building::buildings) i;
这是从int到enum的转换。我认为这是坏的C++(可能是在某些编译器中没有定义的,但不是经验法则)。我想你得用一个开关

请用英语写代码。你能想象如果你的同事是日本人,会用日语变量名编写代码吗?即使项目是荷兰语,也要用英语编写代码,包括注释

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


尝试使用
std::map
编码建筑名称而不是枚举,然后使用
std::map::迭代器对其进行迭代。

什么类型的
(建筑::建筑)
?枚举建筑{house,werf};所以地图必须是例如werf=1下次请:1)使用英文变量名2)描述clasees更多-没有人知道正在构建什么,返回什么INDIGOK,等等我们还需要查看gebouwenMap的定义。一个简单的测试似乎对我来说很好。但是您可能想要更改循环条件;现在,您将无法在循环中获得
Building::statshuis
。换成
对不起,下次我会用英语编程。我用于获取地图中有多少建筑的返回函数如下:int Spel::getAantalGebouw(Gebouw::gebouwen类型)const{return gebouwenMap.find(type)->second;}