Доступ к методу объекта класса, хранящегося в векторе, с помощью итератора. Как? - PullRequest
3 голосов
/ 25 февраля 2012

Эй, первый вопрос, который я задаю здесь, большое спасибо заранее.Я использую вектор для хранения серии указателей на объекты класса CSquare, я хочу иметь итератор, который можно обойти, чтобы получить доступ к функциям определенного объекта.Это мой текущий код, чтобы попытаться это без удачи.IntteliSense говорит мне, что «нет доступных участников».

    vector <CSquare*> pSquares;
    //filled in vector
    vector<CSquare*>::iterator tempIt = pSquares.begin();
    tempIt->getName();

Не уверен, что еще добавить, но если вам нужно что-то еще, чтобы помочь мне, пожалуйста, скажите.Лот.

Редактировать: проблема решена, мне пришлось разыменовать дважды.Следующий код работает, думал, что я просто оставлю это, если кому-то еще понадобится такая же помощь, спасибо, что все равно посмотрели.

    vector <CSquare*> pSquares;
    //filled in vector
    vector<CSquare*>::iterator tempIt = pSquares.begin();
    (**tempIt).getName();

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

Помните, что вам нужно разыменовать итератор, чтобы получить указанную вещь.Поскольку это vector<CSquare*>, ваш итератор фактически является указателем на указатель на CSquare, поэтому вам нужно сделать следующее:

(*tempIt)->getName();
4 голосов
/ 25 февраля 2012

Вам нужно дополнительное разыменование:

(*tempIt)->getName();

Причина в том, что вы храните внутри вектора указатели, поэтому *tempIt является ссылкой на указатель, который вам нужно снова разыменовать для доступа к объекту CSquare.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...