我有一个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

10-04 12:19