class 中变量的 属性 似乎未声明

Property of a variable in class seems to be undeclared

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

当我创建对象实例时,我通过引用 shape var 传递了一个 b2Shape,但是在对象内部我无法访问 shape 的属性(通过调用printR() 例如)。编译器说他们未声明,为什么会这样?这是我创建对象实例的代码:

Object ball;  
b2Shape ballBox;  
ballBox.m_radius = 18;  
ball.shape = &ballBox;  

您需要取消对指针的引用。在 ball.shape 中只会保存 b2Shape 对象实例的地址。这就是为什么你需要使用:

ball.shape->m_radius