C ++从初始化列表分配给数组

时间:2013-08-12 15:44:08

标签: c++ arrays for-loop

我一直在制作一个程序来向屏幕显示菜单。 它工作但

void parser() {
    parsed[0]=data[position];
    for (i=1; i<=Choices; i++) {
        for (ii = 0; ii<= Depth-cDepth; ii++) {
            incriment += pow(Choices, ii);
        }
        incriment++;
        buff = position + incriment;
        parsed[i] = data[buff];
    }
    cout << parsed;
}

正在返回错误:

- invalid types ‘std::string [3] {aka std::basic_string<char> [3]}[double]’ for array subscript

任何帮助都会受到赞赏,我知道有类似的问题,但我无法理解答案。

  • 编辑:错误在解析的行[i] = data [buff]
  • 编辑2:我添加了icopy = i,其中icopy是一个int并且它编译,虽然现在在运行时运行时我得到“Segmentation fault(core dumped)”。

4 个答案:

答案 0 :(得分:2)

正如错误消息所示,您使用double值来下标数组,这是非法的。这里的所有都是它的。

[]运算符的哪个应用程序产生错误 - 只有您知道,因为我们无法从您发布的内容中获取它而不会看到声明。根据您目前提供的信息的各个部分来判断,罪魁祸首必须是parsed[i]子表达式,其中i似乎是double

答案 1 :(得分:0)

我认为它告诉你,你跑掉了数据的结尾[],例如数据有3个元素,你试图访问第4个记住它从0开始,所以data [3]实际上是第4个元素。

答案 2 :(得分:0)

据我所知。无论是我还是buff都是双倍的。

为了确保,请尝试将该行更改为:

parsed[int(i)] = data[int(buff)];

看看它是否仍然存在。

答案 3 :(得分:-1)

pow返回双倍, 虽然incriment最初可能是一个整数,但它在嵌套的for循环中被转换为double。