использовать существующий массив, выполнить итерацию с вектором в заголовочном файле - PullRequest
1 голос
/ 17 марта 2020

Я пытаюсь перебрать существующий массив с вектором.

В тесте класса используется разделяемый указатель с именем инвентаризации [50]. Я хотел бы выполнить итерацию в этом массиве с вектором, но при попытке получить сообщение об ошибке от компилятора: нет совпадения с оператором []. Как я могу получить доступ к элементам, которые находятся в инвентаре массива [50]? Извините, что задаю простые вопросы - я новичок в c ++.

template<typename T>
class Test{
    template<typename m>
    friend std::ostream& operator<<(std::ostream& out, const Test<m>& test);

protected:   
    std::shared_ptr<Object> inventory[50];
public:
    int addInventory(std::shared_ptr<Object> object);

В. cpp файле .:

template<typename T>
int Test<T>::addInventory(std::shared_ptr<Object> object) {
     int n = sizeof(inventory) /sizeof(int);
     std::vector<std::shared_ptr<Object>> vec1(inventory, inventory + n); 
     for(std::vector<std::shared_ptr<Object>>::iterator i = vec1.begin(); i != vec1.end(); i++) {
         if(!this->inventory[*i]) { //not working :(
              this->inventory[*i] = object;
              return *i;
         }
     }
}

С уважением,

Кейта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...