struct中的struct struct失败

时间:2011-07-12 10:49:16

标签: c++ c

我有一个结构A,其定义如下:

typedef struct A
{
    CvRect B; // rect 
    int C;
    double D;
}
A;

...

在我的主程序中,我抓住了一系列项目中的一项:

    A *r = (A*) cvGetSeqElem(X, i);

每当我尝试访问rect时,我都会收到以下错误之一:

    if (r.rect.width>100 && r.rect.height>100)

错误:请求'r'中的成员'rect',这是非类型'A'

    if (r->rect->width>100 && r->rect->height>100)

错误:' - >'的基本操作数有非指针类型'CvRect'

如果它位于另一个结构中,请知道如何访问struct CvRect-> height?

谢谢!

5 个答案:

答案 0 :(得分:5)

r是指向`struct A的指针,其中B包含一个(非指针)成员rect(假设为CvRect?)。所以你必须写上 r->rect.width

答案 1 :(得分:1)

您将这些方法结合起来。例如r->rect.widthr是一个指针,因此您应该使用->运算符。 rect但不是指针,因此您使用.

答案 2 :(得分:0)

在您的示例中,r是一个指针。因此,r直接成员必须通过“ - >”访问,r->rect

r->rect(这应该是r->B,因为您在A)的定义中所谓的是对象,而不是指针。因此,您可以使用.所以r->rect.width访问其成员。

答案 3 :(得分:0)

您发布的代码并未始终如一地命名,但我认为您需要类似

的内容
if (r->rect.width>100 && r->rect.height>100)

如果r是指针,则需要取消引用它才能获得rect成员,但该成员本身不是指针。

答案 4 :(得分:0)

  

如果它位于另一个结构中,请知道如何访问struct CvRect-> height?

r->B.width

如果r是指针或

r.B.width

如果r是实例