C:\Program Files\CodeBlocks\bei\main.cpp|12|error: request for member 'length' in 'num', which is of non-class type 'int [30]'|
时间: 2023-12-24 21:03:01 浏览: 162
这个错误是因为你尝试在一个非类类型的变量 `num` 上调用成员函数 `length`。根据你提供的错误信息和代码,我可以看出问题出现在第12行。
要解决这个问题,你需要明确 `num` 的类型,并使用适当的方式获取其长度。根据错误信息,`num` 被声明为 `int [30]` 类型的数组。
如果你想获取数组的长度,你可以使用 `sizeof` 操作符来计算数组的大小并除以单个元素的大小。例如,将 `num.length()` 改为 `sizeof(num) / sizeof(num[0])`。
修改后的代码应该类似于:
```cpp
int num[30] = {1, 2, 3, ...}; // 假设你初始化了一个长度为30的整数数组
int n = sizeof(num) / sizeof(num[0]);
std::vector<std::vector<int>> dp(n + 1, std::vector<int>(bag + 1, 0));
dp[0][0] = 1;
for (int i = 1; i <= n; i++) {
int value = num[i - 1];
for (int j = 0; j <= bag; j++) {
if (j < value) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - value];
}
}
}
```
请注意,这里假设 `bag` 是一个已定义的变量,并且你已经将 `dp` 声明为一个二维向量。如果你已经使用了正确的语法并声明了正确的变量类型,请检查代码中是否还有其他错误导致该错误出现。
阅读全文