让我说我有:
struct Vector {
int a;
int b;
}
struct Temp {
Vector *array[5];
int find() {
return array[0].a;
}
}
这给了我一个错误“Vector * Temp :: array [5]。表达式必须有类型。如何在struct函数中返回另一个struct的字段? 注意:从我的手机询问。对不起,如果有任何格式问题。
答案 0 :(得分:1)
行
Vector *array[5];
您向向量声明了一个包含5个指针的数组,而不是结构本身。
要解决此问题,您应该切换到结构数组
Vector array[5];
或者如果你真的需要一个指针数组,那么你应该改变你的find函数返回
return array[0]->a;
注意在这里使用->
运算符取消引用结构的指针,然后访问它的成员。
请记住,如果你去指针路线,你也需要为它们中的每一个手动分配内存。
答案 1 :(得分:1)
name
这是一个指向Vector not Vector对象的指针数组。
因此,您需要使用指针表示法来访问Vector的字段,如下所示:
Vector *array[5];
由于您的数组只包含指针,因此您需要确保为每个指针分配存储空间。
array[0]->a;
否则你可以像这样定义你的数组:
for(int i = 0; i < 5; ++i)
array[i] = new Vector;
这是一个Vector对象数组,我认为这就是你想要的。
答案 2 :(得分:0)
如果使用指针向量,则需要使用->
运算符来访问成员。
Vector *array[5];
int find() {
return array[0]->a; // Use -> operator.
}
如果使用对象矢量,则可以使用.
运算符。
Vector array[5]; // vector of object, not pointers.
int find() {
return array[0].a;
}
答案 3 :(得分:0)
Vector *array[5];
是指向Vector
的指针数组。访问a必须是
return array[0]->a;
取消引用指向Vector
的指针并获取其a
成员。但是这会产生不可预测的结果,因为指针没有分配任何存储指向。
你的意思是,
Vector array[5];
创建一个Vector
的数组?