векторный объект внутри другого класса, инициализация векторных объектов и доступ к векторным объектам - PullRequest
0 голосов
/ 23 февраля 2020

Я изучаю начальный уровень C ++. Давайте возьмем пример. Я хочу знать, как можно получить доступ к вектору внутри другого класса, как использовать методы получения и установки для члена вектора.

class A{
    int id;
public :
    A(){
    }
    A(int id){
        id=id;
    }
    int get(){
        return id;
    }
    void set(int id1){
        id=id1;
    }

};
class B{
    vector <A> bb1;
}; 

Как создать конструктор, сеттер, геттер для вектора bb1.

1 Ответ

0 голосов
/ 23 февраля 2020

Как и int, но будьте осторожны, чтобы не делать много копий:

class B {
private:
  vector<A> bb1;
public:
  B(vector<A> v) : bb1{std::move(v)} {}
  auto& get_vec() noexcept { return bb1; }
  auto const& get_vec() const noexcept { return bb1; }
  void set_vec(vector<A> v) { bb1 = std::move(v); }
};

Основные моменты:

  • noexcept (в этом контексте) примерно означает, что эта функция не сработает. Дальнейшее чтение .
  • const (в этом контексте) означает, что эта функция не изменяет состояние объекта. Дальнейшее чтение .
  • std::move грубо говоря, «перемещает» ресурсы одного объекта к другому. Как правило, сохраняет вам копию. Конечно, std::move намного сложнее, чем это. Дальнейшее чтение .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...