Вектор STL внутри толчка доступа к классу

0

Каков синтаксис, чтобы нажимать целое число в вектор, который находится внутри класса Custothe?

class Customer {
vector <int> loyalID;
}

int main {
Customer customer;

vector<Customer>customers;

customers.push_back(/*some integers to go into loyalID vector*/);
}
  • 0
    customers - это вектор Customer , а не int . Вы можете нажать Customer на него, а не на int . Вы можете вставить int на customer.loyalID (или можете, если он не был закрытым). Что, опять же, ты хочешь сделать?
  • 0
    @IgorTandetnik Храните uniqueID (скажем, у клиента карты лояльности) для каждого клиента, и когда я обращаюсь к конкретному клиенту, показываю эти уникальные ID.
Теги:
class
vector
stl

2 ответа

1
Лучший ответ

loyalID - частное поле Customer. Либо сделайте его общедоступным (не рекомендуется), либо добавьте общедоступный метод:

class Customer {
  vector <int> loyalID;

  public:
  void addLoyalId(int id)
  {
    loyalID.push_back(id);
  }
}

Доступ к лояльным идентификаторам:

class Customer {
  vector <int> loyalID;

  public:
  void addLoyalId(int id)
  {
    loyalID.push_back(id);
  }

  std::vector<int>::iterator begin() const { return _loyalID.begin(); }
  std::vector<int>::iterator end() const { return _loyalID.end(); }
}

Применение:

Customer c;
c.addLoyalId(1);
c.addLoyalId(2);
c.addLoyalId(3);

for (auto&& id : c)
{
  std::cout << id << " ";
} // will print "1 2 3"
  • 0
    Будет ли это работать, если я хочу сохранить несколько loyalID для каждого клиента? Если да, как я могу получить доступ?
1

Либо сделать вектор общедоступным (что не рекомендуется), либо написать публичную функцию-член в классе:

void Customer::push_back(int i)
{
    loyalID.push_back(i);
}

В main когда у вас есть элементы в customers вы можете написать что-то вроде этого:

customers[0].push_back(10);
  • 1
    customers пусты на данный момент; customers[0] демонстрируют неопределенное поведение.
  • 0
    Я только что привел пример того, как должна использоваться функция-член. Сделано разъяснение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню