У меня есть очень простой вопрос о возврате ссылки на элемент вектора.Возврат указателя на объект в std :: vector
Существует вектор vec
, в котором хранятся экземпляры класса Foo
. Я хочу получить доступ к элементу из этого вектора. (не хотите использовать векторный индекс). Как мне закодировать метод getFoo
здесь?
#include<vector>
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
class Foo {
public:
Foo(){};
~Foo(){};
};
class B {
public:
vector<Foo> vec;
Foo* getFoo();
B(){};
~B(){};
};
Foo* B::getFoo(){
int i;
vec.push_back(Foo());
i = vec.size() - 1;
// how to return a pointer to vec[i] ??
return vec.at(i);
};
int main(){
B b;
b = B();
int i = 0;
for (i = 0; i < 5; i ++){
b.getFoo();
}
return 0;
}
@gf: Вы писали: «Имея данные участника публично (например, ваш vec здесь), не является хорошей практикой» -> Вы имеете в виду declare 'vec' как' private'? Если это так, когда я возвращаю ссылку на элемент в 'vec' внешнему классу, не выдаст ли он ошибку? – memC
@memC: Да, я хотел сделать 'vec' приватным. Вы все равно можете возвращать ссылки на его содержимое (или даже на сам вектор, хотя это может превзойти цель), это просто означает, что пользователь класса не может напрямую обращаться к элементу 'vec'. –