• 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
84 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ź 465 wizyt
pytanie zadane 18 marca 2021 w C i C++ przez ******** Początkujący (260 p.)
0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 29 listopada 2015 w PHP przez Hatter Gaduła (3,180 p.)
0 głosów
0 odpowiedzi 144 wizyt

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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!

...