Вектор указателей класса-объекта: как получить значение по адресу указателя?C ++ и SDL_Rect - PullRequest
0 голосов
/ 07 марта 2019

У меня есть вектор указателей на класс-объект. Я объявляю вектор в главном ..:

std::vector<Class1*> vector1;
vector1.push_back(&object1);
vector1.push_back(&object2);

Произошла ошибка ниже. Это просто простейший вариант попытки доступа к данным, содержащимся в классе, указанном вектором.

Ex:

main.cpp:

std::cout << vector1[0]->rect->w << std::endl;

Class1.h

SDL_Rect rect{100, 100, 50, 50};

Выше приведено красное подчеркивание слова «Вектор1» с ошибкой «Выражение должно иметь допустимый тип указателя».

EDIT:

Забыл упомянуть, что я пытаюсь добраться до SDL_Rect , содержащегося в объектах класса, на которые указывает вектор ... Не уверен, как / если это что-то изменит. Я предоставлю более полный код, когда уйду с работы.

Код, который я предоставил, работает, если я просто указываю переменную нормального типа, такую ​​как int (где 'age' ниже - int):

 std::cout << vector1[0]->age << std::endl;

Но так как я указываю SDL_Rect в примере из Main.cpp, я получаю ошибку, о которой упоминал. Кто-нибудь знает, в чем особенность?

1 Ответ

2 голосов
/ 07 марта 2019
for(int i = 0; i < vector1.size(); i++)
{
    vector1[i]->width += offset;
}

Разыменуйте указатель с помощью ->, как обычно.

...