2011-06-15 4 views
0

У меня есть вектор, называемый actorVector, который хранит массив объектов типа actorManager.C++ указатель на вектор объектов, необходимо получить доступ к атрибутам

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

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

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

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

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

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

Любые идеи?

+0

Вы получаете ошибку компилятора? –

+2

Было бы неплохо показать соответствующие декларации, поскольку такие описания на самом деле не так, ну, описательные. –

ответ

3

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

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

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

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

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

+0

Он сказал, что 'actorVector - это вектор, а не указатель, так что' * actorVector' означает что-нибудь? Я согласен, что нам нужна дополнительная информация. – Nemo

+0

@Nemo: OP говорит: «Я передал указатель actorVector на функцию» ... –

+0

Да, я пропустил это. – Nemo

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); 
} 
Смежные вопросы