shared_ptr, lista

0

Cześć,
mam problem, ponieważ chciałbym przekształcić poniższą klasę używając shared_ptr i listy. Doda,, że Klasa1 i Klasa2 dziedziczy po klasie Klasa.

#include <iostream>
#include <memory>
#include "Klasa1.hh"
#include "Klasa2.hh"

using namespace std;

class Ogolna{
  Klasa1 pprzyklad;
  Klasa2 dprzyklad;
public:
  Ogolna();
  void FunkcjaPierwsza(pprzyklad.cos());
  void FunkcjaDruga(dprzyklad.coos());

Przerobienie na coś takiego:

#include <iostream>
#include <memory>
#include "Klasa1.hh"
#include "Klasa2.hh"

using namespace std;

class Ogolna{
  list<shared_ptr<Klasa>> Lista;

public:
  Ogolna();
  void FunkcjaPierwsza(pprzyklad.cos());
  void FunkcjaDruga(dprzyklad.coos());

Konstruktor:

  Lista.push_back(new Klasa1());
  Lista.push_back(new Klasa2());

Kompilator:
error: 'shared_ptr' was not declared in this scope

error: 'Lista' was not declared in this scope

Gdzie popełniam błąd? Mam nadzieje, że rzeczowo wyjaśniłem problem.

0

void FunkcjaPierwsza(pprzyklad.cos()); to nie wygląda jak by miało prawo się skompilować.

Nie widzę też #include <list>. Zamieść poprawny przykład.

0

Jasne include <list> jest w przykładzie. Oczywiście co do drugiego powinno być:

void FunkcjaPierwsza(){pprzyklad.cos();}
void FunkcjaDruga(){dprzyklad.coos();}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0