我一直在制作一个程序来向屏幕显示菜单。 它工作但
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
任何帮助都会受到赞赏,我知道有类似的问题,但我无法理解答案。
答案 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。