我有一个结构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?
谢谢!
答案 0 :(得分:5)
r
是指向`struct A
的指针,其中B
包含一个(非指针)成员rect
(假设为CvRect
?)。所以你必须写上
r->rect.width
答案 1 :(得分:1)
您将这些方法结合起来。例如r->rect.width
。 r
是一个指针,因此您应该使用->
运算符。 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是实例