Как обратиться к методу класса через итератор?

200
16 апреля 2019, 13:00

Есть два класса, второй из них хранит в себе вектор, с указателями на объекты первого класса. Как во втором классе через итератор обращаться к методам обьектов первого класса?

В примере в displayVectorINT() и displayVector():

#include <vector>
#include <iostream>
using namespace std;
class MyFirstClass
{
public:
    int number;
public:
    MyFirstClass(int number_)
    {
        number = number_;
    }
    int returnNumber()
    {
        return number;
    }
};
class MySecondClass
{
private:
    vector<MyFirstClass*> vec;
public:
    MySecondClass()
    {
    }
    void addToVector()
    {
        vec.push_back(new MyFirstClass(1));
    }
    void displayVector()
    {
        for (vector<MyFirstClass*>::iterator it = vec.begin(); it != vec.end(); it++)
        {
            std::cout << **it.number; //    <-- как обратиться к методу класса через итератор?
        }
    }
    void displayVectorINT()
    {
        for (int i = 0; i < vec.size(); i++)
        {
            std::cout << vec[i]->returnNumber(); // <-- тут работает
        }
    }
};
int main()
{
    MySecondClass ob;
    ob.addToVector();
    ob.displayVector();
    return 1;
}
Answer 1

С помощью *(it)->метод.

*(it) разыменовывает итератор, а оператор -> вызывает у указателя метод класса.

READ ALSO
не выводятся все рисунки с текстурой

не выводятся все рисунки с текстурой

Я создаю кучу спрайтов и загружаю картинки в текстуры вот так

323
fflush(stdout) в QProcess

fflush(stdout) в QProcess

Задача такова: Существует консольное приложение, осуществляющее некоторое действие (в частности: копирование файла с сохранением времени...

144
Winsock отправка массива типа vector

Winsock отправка массива типа vector

Имею такую матрицу vector<vector<float>> matrix n-го размеракаким образом ее передать через сокеты на сервер

179
Пять Чисел Задача C++

Пять Чисел Задача C++

Написал такой код, проходит половину тестов, из тех что не проходят - половина ограничение по времени, половина неверный ответГде в коде ошибка...

188