如何从另一个struct的函数返回struct的字段?

时间:2015-10-23 21:57:49

标签: c++

让我说我有:

struct Vector {
    int a;
    int b;
}

struct Temp {
    Vector *array[5];

    int find() {
        return array[0].a;
    }
}

这给了我一个错误“Vector * Temp :: array [5]。表达式必须有类型。如何在struct函数中返回另一个struct的字段? 注意:从我的手机询问。对不起,如果有任何格式问题。

4 个答案:

答案 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的数组?