我有一个Object
类,在其中声明了一个b2Shape
类型的变量,它具有两个公共(public)属性,如下所示:
class b2Shape{
public:
[other methods]
Type m_type;
float32 m_radius;
};
内部对象我以这种方式声明:
class Object{
public:
[other methods]
b2Shape* shape;
void printR(){
cout<<shape.m_radius;
}
};
创建Object的实例时,我通过引用
b2Shape
var来传递shape
,但是在Object内部,我无法访问shape
的属性(例如,通过调用printR()
)。编译器说他们没有声明,为什么会这样?这是我创建对象实例的代码:Object ball;
b2Shape ballBox;
ballBox.m_radius = 18;
ball.shape = &ballBox;
最佳答案
您需要取消引用指针。在ball.shape中,只会保存b2Shape对象实例的地址。这就是为什么您要使用:
ball.shape->m_radius