我想在主类中输入数据 (10 Players&Scores),如何调用无效的“ScoresList::add(const GameEntry& e)”?

问题描述

我发现调用 add 函数很困难。请帮我调用add函数并输入分数和玩家。

#include<iostream>
#include<string>
using namespace std;

class GameEntry                           
{
    private:
        string playerName;                 
        int playerscore;                    
        GameEntry*next;                    
        friend class scoresList;           
    public:
        void setData(const string &name,int score )             
            {                                                    
            playerName = name;                                  
            playerscore = score;
            }
};

class scoresList                                                
{
    public:
        scoresList();                                                    //constructor to assign maxEnt
        void add(const GameEntry& e);                                  
        void remove(int i);                                             
        void removeLast();                                               
        void printEntries() ;                                               
        bool empty() const;                                              

    private:                                                        


        GameEntry*headNode;                                         
        int scoreCounter;                                           
};

这是我需要在主类中调用添加函数

  • void scoresList::add(const GameEntry& e)

    void scoresList::add(const GameEntry& e)
    { GameEntry*buffNode = new GameEntry;
    buffNode->playerName = e.playerName;
    buffNode->playerscore = e.playerscore; buffNode->next = NULL;

     if(headNode == NULL)                 
         {
         headNode = buffNode;             
         scoreCounter++;                 
         }
     else                        
         {
    
         if(e.playerscore > headNode->playerscore)  
             {
             buffNode->next = headNode;               
             headNode = buffNode;
             scoreCounter++;                             
             }
    
         else                                         
             {
    
             GameEntry *tempNode;                        
             tempNode = headNode;                              
             while(tempNode->next != NULL)                   
                 {
                 if(tempNode->playerscore > buffNode-> playerscore && buffNode-> playerscore >= tempNode->next->playerscore)             
                 {
    
                 buffNode->next = tempNode->next;            
                 tempNode->next = buffNode;
                 scoreCounter++;                            
                 }
                 tempNode = tempNode->next;                   
                 }
    
             if(tempNode->playerscore >= buffNode-> playerscore)          
                 {
                 cout << "\n Sorry! the score is insufficient to make it to the top 10.";              
                 }
    
             else                                                    
                 {
                 tempNode -> playerName = e.playerName;                      
                 tempNode -> playerscore = e.playerscore;
                 scoreCounter++;     
                 }
             }
         }
     if(scoreCounter >= 11) 
     removeLast();
    

    } }

*** 如何调用添加函数输入 10 scores and Name.***

int main() {

        return 0;
    }

编辑 * 谢谢,我现在有了答案。

int main() {

        cout<<"Enter Player's Name : "; 
        cin>>playerName;
        cout<<"Enter Player's score : "; 
        cin>>playerscore;
        GE.setData(playerName,playerscore); 
        GE.displays();   
        sl.add(GE);

返回0; }

解决方法

main 函数获取输入并将该值传递给类中的函数,使用该函数的调用语句

示例:

#include<iostream>
#include<string>

class Student 
{
    private :
          string name;
          int student_id;

    public : 
            void getData(string name,student_id)
            {     
                   this->name=name;
                   this->student_id=student_id;

             }
              
             void display ()
             {
                    cout<<"STUDENT NAME : "<<name<<endl;
                    cout<<"STUDWNT ID : "<<student_id<<endl;
             }
};

int main()
{
    Student s1; // Student object 

    string name; 
    int id;
     
    cout<<"Enter Student Name : "; //get input here
    cin>>name;

     cout<<"Enter Student ID : "; //get input here
     cin>>id;

     s1.getData(name,id);  // pass values to getData function 
     s1.display();. // display values

       return 0;
}
,

我认为您可以使用循环和构造函数来获取 10 个输入并传递给类。在数组中创建 10 个对象并将值传递给构造函数

示例:

#include<iostream>
#include<string>
using namespace std;

class Student 
{
private :
      string name;
      int student_id;

public : 
        Student (string name,int student_id)
        {     
               this->name=name;
               this->student_id=student_id;
         }          
         void display ()
         {
              cout<<"NAME : "<<name<<endl;
                cout<<"ID : "<<student_id<<endl;
         }
};




int main()
{
string name; 
int id;
for(int c=0;c<=9;c++)
{
      cout<<"Enter Student Name : ";
      cin>>name; //get input here
      cout<<"Enter Student ID : "; 
      cin>>id; //get input here

      Student s[c](name,id);  //student object array 

        s[c].display();. // display values
 }

       return 0;
 }