C++ 结构内部的访问结构失败

C++ 结构内部的访问结构失败,c++,c,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,其定义如下:

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”

错误:“->”的基操作数具有非指针类型“CvRect”

知道如何访问位于另一个结构中的结构CvRect->height吗


谢谢

r
是指向
`struct a
的指针,其中包含指向
CvRect
的(非指针)成员
B
(假定为
rect
?)。所以你必须写

r->rect.width

r
是指向
`struct a
的指针,其中包含一个指向
CvRect
的(非指针)成员
B
(假定为
rect
?)。所以你必须写

r->rect.width

您可以组合这些方法<例如,代码>r->rect.width
r
是一个指针,因此应该使用
->
运算符<但是,code>rect不是指针,因此您可以使用

组合这些方法<例如,代码>r->rect.width
r
是一个指针,因此应该使用
->
运算符<但是,code>rect不是指针,因此在示例中使用

时,
r
是指针。因此,必须通过“->”访问
r
的直接成员,如
r->rect


r->rect
(这应该是
r->B
,因为在
A的定义中,这就是你所说的)
是一个对象,而不是指针。因此,您可以使用
访问其成员,因此
r->rect.width
在您的示例中,
r
是一个指针。因此,必须通过“->”访问
r
的直接成员,如
r->rect


r->rect
(这应该是
r->B
,因为在
A的定义中,这就是你所说的)
是一个对象,而不是指针。因此,您可以使用
访问其成员,因此
r->rect.width
您发布的代码名称不一致,但我认为您需要类似的名称

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

如果r是一个指针,您需要取消对它的引用以获得
rect
成员,但该成员本身不是指针。

您发布的代码名称不一致,但我认为您需要类似的名称

if (r->rect.width>100 && r->rect.height>100)
如果r是指针,则需要取消对它的引用以获得
rect
成员,但该成员本身不是指针

知道如何访问位于另一个结构中的结构CvRect->height吗

如果r是指针或

r.B.width
如果r是一个实例

知道如何访问位于另一个结构中的结构CvRect->height吗

如果r是指针或

r.B.width

如果r是一个实例

你的
a
声明不包含名为
rect
的成员。你的
a
声明不包含名为
rect
的成员。我想你的意思是
r->B.width
@qbert:从问题中详述错误的代码示例中,我假设
B
实际上是
rect
,所以我选择了这个名字……我想你的意思是
r->B.width
@qbert:从问题中详述错误的代码示例来看,我假设
B
实际上是
rect
,所以我选择了这个名字。。。