C ++ указатель на вектор объектов, необходим доступ к атрибутам - PullRequest
0 голосов
/ 15 июня 2011

У меня есть вектор с именем actorVector, в котором хранится массив объектов типа actorManager.

Класс actorManager имеет закрытый атрибут, который также является объектом типа GLFrame.У него есть метод доступа getFrame (), который возвращает указатель на объект GLFrame.

Я передал указатель actorVector в функцию, поэтому он является указателем на вектор объектов типа actorManager.

Мне нужно передать объект GLFrame в качестве параметра этой функции:

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

В настоящее время я пытаюсь сделать это как таковой, но я не получаю никаких результатов.

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 15 июня 2011

Предполагая, что MultMatrix принимает ActorManager по значению или по ссылке (в отличие от указателя), тогда вы хотите это:

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

Обратите внимание, что правила предшествования означают, что вышесказанное эквивалентно:

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

Однако это то, что у вас уже есть, поэтому должно быть что-то, о чем вы нам не говорите ...

0 голосов
/ 15 июня 2011

Попробуйте 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);
}
...