-1

我一直在开发一个在屏幕上显示菜单的程序。它正在工作,但是

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

任何帮助将不胜感激,我知道有类似的问题,但我无法理解答案。

  • 编辑:错误在 parsed[i]=data[buff] 行
  • 编辑 2:我添加了 icopy = i,其中 icopy 是一个 int 并且它可以编译,尽管现在在运行时我得到“分段错误(核心转储)”。
4

4 回答 4

2

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

哪个[]运算符的应用程序会产生错误 - 只有您知道,因为我们无法在没有看到声明的情况下从您发布的内容中得出它。从您到目前为止提供的点点滴滴的信息来看,罪魁祸首一定是parsed[i]子表达式,其中i似乎是double.

于 2013-08-12T16:02:35.200 回答
0

据我所知。i 或 buff 都是双倍的。

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

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

看看它是否仍然发生。

于 2013-08-12T16:08:07.383 回答
0

我认为它告诉你你跑完了 data[] 例如 data 有 3 个元素,你试图访问第 4 个元素,记住它以 0 开头,所以 data[3] 实际上是第 4 个元素。

于 2013-08-12T15:55:55.567 回答
-1

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

于 2013-08-12T15:56:41.167 回答