• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konstruktor automatycznie dodający tworzony obiekt do wektora

Object Storage Arubacloud
0 głosów
85 wizyt
pytanie zadane 29 maja 2020 w C i C++ przez persikk Obywatel (1,140 p.)
vector<Wojewodztwo> w;


class Wojewodztwo
{

    string nazwa_wojewodztwa;
    vector <Miasto> miasta;


    public:

    Wojewodztwo(string x)
    {
        nazwa_wojewodztwa=x;
        //w.push_back(this);
        w.push_back();               //tutaj wywala błąd
    }

Witam mam problem tego typu że przy tworzeniu obiektów klasy Wojewodztwo chciałbym żeby one automatycznie w konstruktorze wskakiwały do wektora Wojewodztwo. 

Są to moje początki z wektorami i nie mam pojęcia gdzie popełniam błąd ;/

Kombinowałem coś z klasą pomocniczą ale ciągle zawieszam się na etapie gdzie chce aby konstruktor automatycznie dodawał do wektora

1 odpowiedź

+1 głos
odpowiedź 29 maja 2020 przez LuQ232 Mądrala (7,200 p.)
wybrane 29 maja 2020 przez persikk
 
Najlepsza

Nie jestem pewny co do tego, że to najlepsze rozwiązanie, ale lepsze niż żadne. Taki efekt mozna uzyskać posiadając 2 konstruktory. Jeden z argumentem string x, a drugi z argumentem string x oraz referencji do oryinalnego vectora do którego chcemy to wrzucić.

Wojewodztwo(string x)
    {
        nazwa_wojewodztwa =x;
    }

    Wojewodztwo(string x,vector<Wojewodztwo> &vec)
    {
        vec.emplace_back(x); // następuje wywolanie I konstruktora z parametrem string x
    }

 

Lub jak nie chcesz używac emplace_back to tak:

    Wojewodztwo(string x)
    {
        nazwa_wojewodztwa =x;
    }

    Wojewodztwo(string x,vector<Wojewodztwo> &vec)
    {
        vec.push_back(Wojewodztwo(x));
    }

I oczywiscie w odpowiednim miejscu przy tworzeniu nowego obiektu Wojewodztwo musimy przsyłać vector jako drugi argument.

vector<Wojewodztwo> w;
Wojewodztwo("Lodzkie",w);
Wojewodztwo("Dolnoslaskie",w);

 

 

Poniżej cały program dla testu:

#include <iostream>
#include <vector>


using namespace std;

class Wojewodztwo
{
    string nazwa_wojewodztwa;


    public:
    Wojewodztwo(string x)
    {
        nazwa_wojewodztwa =x;
    }

    Wojewodztwo(string x,vector<Wojewodztwo> &vec)
    {
        vec.push_back(Wojewodztwo(x));
    }

    string zwroc_nazwe()
    {
        return nazwa_wojewodztwa;
    }
};


int main()
{

    vector<Wojewodztwo> w;
    Wojewodztwo("Lodzkie",w);
    Wojewodztwo("Dolnoslaskie",w);
    Wojewodztwo("Slaskie",w);

    for(int i=0;i<w.size();i++)
    {
        cout<<w[i].zwroc_nazwe()<<endl;
    }

    return 0;
}

 

Jeżeli ktoś ma bardziej prawidłowy sposób na zrealizowanie tego problemu z chęcią się dowiem jak powinno to być zrobione profesjonalnie

komentarz 29 maja 2020 przez persikk Obywatel (1,140 p.)
Dziękuje działa ! :D

Podobne pytania

0 głosów
1 odpowiedź 471 wizyt
pytanie zadane 18 marca 2021 w C i C++ przez ******** Początkujący (260 p.)
0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 29 listopada 2015 w PHP przez Hatter Gaduła (3,180 p.)
0 głosów
0 odpowiedzi 145 wizyt

92,619 zapytań

141,467 odpowiedzi

319,785 komentarzy

62,001 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...