У меня есть код, который добавляет несколько объектов в вектор. Затем я хочу извлечь конкретный объект из вектора и иметь возможность записывать и редактировать его закрытые переменные-члены.
Это код, который у меня сейчас есть:
class Product {
public:
Product(int n, const string& na, int p)
: number(n), name(na), price(p) {};
void info() const;
private:
string name;
int number, price;
};
Функция-член выглядит следующим образом:
void Product::info() const {
cout << number << ". " << name << " " price << endl;
}
Затем я создаю вектор и добавляю в него некоторые объекты, например:
vector<Product> range;
range.push_back(Product(1, "Bagpipe", 25));
Чтобы получить и вывести информацию обо всех объектах, у меня есть следующая функция:
void listProducts (const vector<Product>& range1) {
for_each (range1.begin(), range1.end(), mem_fun_ref(&Product::info));
}
Но вот где я застреваю.
Чтобы свести мою проблему: Я понятия не имею, как извлечь отдельные объекты из вектора и отредактировать их. Мне нужно иметь возможность искать в моем векторе объекты, содержащие определенное число или имя, и иметь возможность извлекать либо информацию обо всех его закрытых членах, а также иметь возможность редактировать всех членов.
Таким образом, у меня есть идеи относительно решений:
для создания дополнительных функций-членов
которые могут вернуть отдельные члены
для создания функций, которые, подобно функции, которую я уже описал выше, могут выполнять поиск по каждому объекту в векторе и использовать возврат этих дополнительных функций-членов для сравнения с тем, что я ищу
Я не совсем знаю, как мне отредактировать закрытые элементы объектов, но мое текущее предположение состоит в том, что для этого мне понадобятся и функции-члены, и функции, связанные с этими
Любая помощь будет принята с благодарностью! Даже смутные толчки в правильном направлении!