C ++指向对象向量的指针,需要访问属性

时间:2011-06-15 00:10:32

标签: c++ pointers stdvector

我有一个名为actorVector的向量,它存储一个actorManager类型的对象数组。

actorManager类有一个私有属性,它也是GLFrame类型的对象。它有一个访问器getFrame(),它返回一个指向GLFrame对象的指针。

我已将actorVector的指针传递给函数,因此它是指向actorManager类型的对象向量的指针。

我需要将GLFrame对象作为参数传递给此函数:

modelViewMatrix.MultMatrix(**GLFrame isntance**);

我目前一直在尝试这样做,但我没有得到任何结果。

modelViewMatrix.MultMatrix(*(*actorVector)[i].getFrame());

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

假设MultMatrix通过引用(而非指针)获取ActorManager,那么您需要这样:

modelViewMatrix.MultMatrix(*((*actorVector)[i].getFrame()));

请注意,优先规则意味着上述内容相当于:

modelViewMatrix.MultMatrix(*(*actorVector)[i].getFrame());

然而,这就是你已经拥有的东西,所以必须有一些你不告诉我们的东西......

答案 1 :(得分:0)

尝试modelViewMatrix.MultMatrix( *(*p)[i].getFrame() );

#include <vector>
using std::vector;

class GLFrame {};
class actorManager {
  /* The actorManager class has a private attribute, which is also an
  object of type GLFrame. It has an accessor, getFrame(), which returns
  a pointer to the GLFrame object. */
private:
  GLFrame g;
public:
  GLFrame* getFrame() { return &g; }
};

/* I need to pass the GLFrame object as a parameter to this function:
   modelViewMatrix.MultMatrix(**GLFrame isntance**); */
class ModelViewMatrix {
public:
  void MultMatrix(GLFrame g){}
};
ModelViewMatrix modelViewMatrix;

/* I have a vector called actorVector which stores an array of objects of
type actorManager.  */
vector<actorManager> actorVector;

/* I have passed a pointer of actorVector to a function, so its a pointer
to a vector of objects of type actorManager. */
void f(vector<actorManager>* p, int i) {
/* I need to pass the GLFrame object as a parameter to this function:
   modelViewMatrix.MultMatrix(**GLFrame isntance**); */
   modelViewMatrix.MultMatrix( *(*p)[i].getFrame() );
}

int main() {
  f(&actorVector, 1);
}