Вопрос класса очереди
всем привет,
Я работал над проектом с другом, и там есть часть нашего кода, которую никто из нас не знает, как реализовать. Я даже не уверен, как это будет называться, это похоже на функцию указателя типа. Я покажу вам маленькие кусочки нашего кода. главная проблема заключается в том, что
переменные класса не существуют внутри этой "функции-указателя", так как же мы ее используем?
класс - это реализация очереди игроков для игры.
/*________________________ from the header file____________________________*/ class Queue { public: player* front_player(Player::Role r); //this is what I'm talking about int size(); // will use the member variable count private: Player** players// pointer to the queue int count; //total number of players int capacity;//current size of queue /*--------- class is implemented in separate source file---------- */ /* count is initialized in constructor and changed by other functions*/ int queue::size(){ return count; } Player * front_player(Player::Role r){ /* this is where we are stuck,because we can't access size or capacity. should we not treat this as a function and instead use it inside another function???? */ /*I don't know how helpful this would be but I will include bits of the class player */ class Player { public: Player( string name , Role role); string name(); Role role(); private: string _name; Role _role; /* I noticed _name and _role are typed in green, can anyone tell me the significance of the underscore*/ /*_______________________ in the player.cpp___________________*/ Player :: Player(string name, Role role) { _name = name; _role = role; } string Player :: name() { return _name; } Player::Role Player :: role() { return _role; } /*_____________ in the main. just so you can see how its called____________*/ int main() { queue q; q.size() ==0; q.front_player(Player::defender)==nullptr); return 0; }
Что я уже пробовал:
Player * front_player(Player::Role r){ /* this is where we are stuck */ /* first try*/ for(int i= 0; i<count ; i++) { do something} /* second try*/ for(int i=0; i<player.size(); i++){ do something} /*third try */ if (count ==0) return Player [count-1];
Richard MacCutchan
Ваш вопрос неясен, что должен делать отсутствующий код?
Member 13540005
сожалеть об этом
Возвращает указатель на самого переднего игрока с указанной ролью.
Если такого игрока не существует,
возвращает значение nullptr.
Richard MacCutchan
Где находится очередь, содержащая записи? Этот код ссылается на массив с именем Player
и какой-то объект с именем player
- эти два понятия различны. А поскольку C++ уже содержит класс queue, почему бы не использовать его? Видеть класс очереди | Microsoft Docs[^]