Member 13540005 Ответов: 0

Вопрос класса очереди


всем привет,
Я работал над проектом с другом, и там есть часть нашего кода, которую никто из нас не знает, как реализовать. Я даже не уверен, как это будет называться, это похоже на функцию указателя типа. Я покажу вам маленькие кусочки нашего кода. главная проблема заключается в том, что
переменные класса не существуют внутри этой "функции-указателя", так как же мы ее используем?
класс - это реализация очереди игроков для игры.


/*________________________ 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[^]

0 Ответов