对于我的作业,我必须使用C ++编写一个类游戏,该类具有名称,大小和更新列表,其中包含更新日期以及有关该更新的一些信息。 (例如:22.05.2018已在任务3中修复错误)。这是我尝试过的方法,但是不起作用。 Game.h:

class Game{
 public:
  struct update{
     string date;
     string info;
 };
  string name;
  double size;
  list<update>l;
  Game(string name, double size, list<update>l);
  virtual ~Game();
 };


并在Game.cpp中:

Game::Game(string name, double size, list<update>l){
    this->name=name;
    this->size=size;
    this->l=l;
 }


在int main中,我创建了一个列表:

int main()
{
  list<update>mylist;
  update u1,u2,u3;
  u1.date="20.05.2018";
  u1.info="Mission 3 bug fixed";
  u2.date="25.05.2018";
  u2.info="New quest";
  mylist.push_back(u1);
  mylist.push_back(u2);
  Game g("Gta5",60.0,mylist);
  return 0;
 }


我收到此错误:

no matching function for call to 'Game::Game(const char [4], double, std::__cxx11::list<update>&)'|

最佳答案

或者,如果您想保留嵌套类update

#include <string>
#include <list>


using std::string;
using std::list;

class Game{
public:
    struct update{
        string date;
        string info;
    };
    string name;
    double size;
    list<update>l;
    Game(string name, double size, list<update>l);
    virtual ~Game() {}
};


Game::Game(string name, double size, list<update>l){
    this->name=name;
    this->size=size;
    this->l=l;
}


int main()
{
    list<Game::update> mylist; // use Game::update to access nested class
    Game::update u1,u2,u3;
    u1.date="20.05.2018";
    u1.info="Mission 3 bug fixed";
    u2.date="25.05.2018";
    u2.info="New quest";
    mylist.push_back(u1);
    mylist.push_back(u2);
    Game g("Gta5",60.0,mylist);
    return 0;
}

09-30 15:48
查看更多