Stl список структуры как член класса - PullRequest
0 голосов
/ 04 июня 2018

Для домашней работы я должен сделать класс Game на 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>&)'|

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Или, если вы хотите сохранить вложенный класс 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;
}
0 голосов
/ 04 июня 2018

Попробуйте,

#include<bits/stdc++.h>
using namespace std;

struct update
{
     string date;
     string info;

     update(string date,string info){
         this->date=date;
         this->info=info;
     }
};

class Game{
 public:

  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<update> l,m;
 l.push_front(update("10/10/2017","some bug fixed"));
 double size=100;
 string name="Game1";
 Game obj(name,size,l);

 cout<<obj.name<<" "<<obj.size<<" "<<endl;
 m=obj.l;
 list<update>::iterator i;

 for(i=m.begin();i!=m.end();i++){
    update structObj=*i;
    cout<<structObj.date<<" "<<structObj.info<<endl;   
 }     

 return 0;   
} 

Вывод

Game1 100
10/10/2017, исправлена ​​некоторая ошибка

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