【发布时间】:2013-05-20 19:15:01
【问题描述】:
我正在尝试创建一个仅取自已创建数组的正值的新数组,当我遍历原始数组时,索引出现错误“表达式必须具有指向对象类型的指针”我尝试进行研究关于错误,每个人在收到此错误时的情况都不同,所以我自己处理这个问题。这是我的代码:
int foo::createNewArray() const {
int newarray[50];
int oldarray = oldarray[values];
int size = (sizeof(oldarray));
for (int i = 0; i > size; i++){
if (oldarray[i] > 0)
newarray[i] = oldarray[i];
}
上面的“i”是有错误的。 oldarray[values] 在单独的类文件中声明。这是它来自的代码的一小部分。
class foo{
int oldarray[1];
enum unit {values};
public:
int createNewArray() const;
};
【问题讨论】:
-
嗯,第一个代码示例有很多错误。
-
@chris 喜欢什么?自从我完成 C++ 以来已经有一段时间了
-
int oldarray = oldarray[values] 你不应该重新声明 oldarray。您没有将 oldarray 设置为另一个 oldarray 的所有值。您正在创建一个整数“oldarray”并为其分配 oldarray[values] 的值...抱歉,由于您对 oldarray 与 oldarray 的重复命名,此解释令人困惑... int size = sizeof(oldarray) 可能不是在这种情况下是安全的,因为我们不确定 oldarray 确实是一个数组还是一个整数,所以您可能只会得到一个整数的大小,而不是 oldarray 中元素的数量。
-
@user12074577,除了到目前为止的答案之外,
i > size、size = (sizeof(oldarray))、if (oldarray[i] > 0)... 有人可能会争辩说,您也应该将std::array用于已知大小的数组。 -
我在您的代码中添加了 cmets,有很多问题,我认为在此处列出它们比仅在每行注释行更有用。对于我认为您正在尝试做的事情,我正在编辑“正确”代码。