Синтаксис моего вектора <string>неправильный? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть класс с вектором предметов, которые я добавляю в инвентарь игрока. Когда я компилирую свой проект, я получаю ошибку, связанную с моим вектором, но не знаю, что может быть причиной этой ошибки. Нужно ли использовать строковые переменные вместо строки?

Player. cpp

#include <iostream>
#include <vector>

#include "player.h"
using namespace std;

void Player::AddItem(string item)
{

        items.push_back(item);


}

void Player::UseItem(string item)
{

        if(HasItem(item))
        {
                items.pop_back();
        }


}

Player.h

#ifndef PLAYER_H
#define PLAYER_H

#include <iostream>
#include <vector>

class Player
{

        private:
                int row;
                int col;
                int moves;
                std::vector<std::string> items();

        public:
                Player();
                int GetRow();
                int GetCol();
                void SetPosition(int row, int col);
                void AddItem(std::string item);
                bool HasItem(std::string item);
                void UseItem(std::string item);
                int GetMoveCount();
                void IncrementMoves();





};


#endif

Полученная ошибка:

player.cpp: In member function ‘void Player::AddItem(std::__cxx11::string)’:
player.cpp:49:2: error: invalid use of member function ‘std::vector<std::__cxx11::basic_string<char> > Player::items()’ (did you forget the ‘()’ ?)
  items.push_back(item);
  ^~~~~
player.cpp: In member function ‘void Player::UseItem(std::__cxx11::string)’:
player.cpp:72:3: error: invalid use of member function ‘std::vector<std::__cxx11::basic_string<char> > Player::items()’ (did you forget the ‘()’ ?)
   items.pop_back();
   ^~~~~
make: *** [<builtin>: player.o] Error 1

Что может быть причиной этой ошибки?

1 Ответ

2 голосов
/ 16 марта 2020

Эта строка

std::vector<std::string> items();

объявляет закрытую функцию с именем items, которая не принимает аргументов и возвращает std::vector<std::string>.

Измените ее на

std::vector<std::string> items;

Ваше сообщение об ошибке

player.cpp:49:2: error: invalid use of member function ‘std::vector<std::__cxx11::basic_string<char> > Player::items()’ (did you forget the ‘()’ ?)

Это довольно наглядно. Он говорит, что у вас есть функция-член с именем items() и думает, что вы, возможно, вызываете ее неправильно.

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