假设我有一个POD C结构:
struct Example {
int x;
int y[10];
int yLen;
}使用以下代码,程序无法编译:
Example test() {
int y[10];
int yLen = 0;
auto len = this->getSomethingLength();
for (int i = 0; i < len; i++) {
y[yLen++] = this->getSomething(i);
}
return Example{ 0, y, yLen };
}然而,执行return {0, {}, 0};似乎是可以编译的。问题是,我不能知道y的大小,除非提前做一些逻辑运算。在test中初始化int y[10]{}似乎没有什么不同。我知道这似乎是一个非常简单的问题,但我似乎找不到任何有用的东西。
发布于 2020-07-24 11:49:58
将结构声明为整体,而不是其部分,然后对其进行初始化:
Example test() {
Example result;
auto len = this->getSomethingLength();
for (result.yLen = 0; result.yLen < len; result.yLen++) {
result.y[result.yLen] = this->getSomething(result.yLen);
}
return result;
}当大小已知时,将y声明为int*并使用new分配内存将是一个更好的解决方案。
https://stackoverflow.com/questions/63066454
复制相似问题