在' ['之前预期的初级表达代币

时间:2014-04-29 14:09:05

标签: c++

我试图创建一个生成没有双打的颜色代码的函数。我的尝试:

        int random(int lowerbounds, int upperbounds)
        {
            return lowerbounds + rand() % (upperbounds - lowerbounds + 1);
        }

        enum Farbe { Red, Orange, Grey, Blue, Grey, White, Purple };
        bool err;
        int zahl;
        Farbe Code[];
        while(err)
        {
            for(int i = 0; i < 4; i++)
            {
                zahl = 0;
                zahl = random(1, 7);
                switch (zahl) {
                case 1:
                    Code[i] = Red;
                    break;
                case 2:
                    Code[i] = Orange;
                    break;
                case 3:
                    Code[i] = Grey;
                    break;
                case 4:
                    Code[i] = Blue;
                    break;
                case 5:
                    Code[i] = Green;
                    break;
                case 6:
                    Code[i] = White;
                    break;
                case 7:
                    Code[i] = Purple;
                    break;
                }
            }
            for(int i = 0; i < 3; i++)
            {
                for(int j = 0; j < 3; j++)
                {
                    if(i != j)
                    {
                        if(Farbe[i] == Farbe[j]) // here is the Error
                        {
                            err = true;
                        }
                    }
                }
            }

        }

但编译器总是返回错误

...cpp:72: error: expected primary-expression before '[' token

...cpp:72: error: expected primary-expression before ']' token

我认为这是一个非常简单的算法,但我不知道要解决。 有帮助吗?

2 个答案:

答案 0 :(得分:3)

看起来您在生成错误的行中使用了Farbe而不是Code。它应该是:

if(Code[i] == Code[j])

答案 1 :(得分:2)

if(Farbe[i] == Farbe[j]) // here is the Error
{
err = true;
}

Farbe是枚举类型,不是数组变量。 你必须指的是Farbe

类型的可变code