Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C++ implicitný konštruktor z natriedy

Čaute keď mám

class A {
public:
    A() { nejakyKod }
};
class B : public A {
};

Nedá sa nejako prekladaču povedať že tam chcem rovnaký konštruktor (alebo ak je ich viac tak konštruktory) ako v nadtriede? Aby som to nemusel zakaždým ručne prepisovať?

Předmět Autor Datum
Co používáš za překladač? S MinGW32 mi to zkompilovat jde bez problému.
GTS 03.04.2020 18:44
GTS
Mate pravdu uviedol som hlupy priklad, ktory sa prelozi a vobec z neho neni jasne co chcem docielit.… poslední
alPravnuk 04.04.2020 01:47
alPravnuk

Mate pravdu uviedol som hlupy priklad, ktory sa prelozi a vobec z neho neni jasne co chcem docielit. Skusim iny:

#include <iostream>
#include <string>

using namespace std;

class Parent {
    wstring _text;
public:
    Parent(wstring input) : _text(input), text(_text)
    {
    }
    wstring& text;
};

class Child : public Parent {

};

void main()
{
    auto p = new Parent(L"Lorem ipsum");
    wcout << p->text << endl;
    auto c = new Child(L"Lorem ipsum"); // ocakaval som ze ked nevyplnim ziadny konstruktor prekladac automaticky doplni konstruktory z nadtriedy
    wcout << c->text << endl;
}

V childe by som chcel aby vygenerovalo implicitny konstruktor (konstruktory) ktory by sedel s tym v parentovi. Priamo to nejde otazka je ci neexistuje aspon nejaka moznost ako prekladacu naznacit nech ho okopiruje bez toho aby som to musel prepisovat. Cakal som ze bude fungovat nieco na sposob:

class Child : public Parent {
      Child = 0;
};

alebo aspon:

class Child : public Parent {
      Child(wstring input) = 0;
};

Ale nefunguje ani to.

Funguje akurat toto:

class Child : public Parent {
      Child (wstring input): Parent(input) {};
};

A ked ma trieda dajme tomu 4 - 5 konstruktorov tak je dost otravne to prepisovat a tiez to trosku ide proti principu DRY. Aj ked chapem logiku preco to treba prepisovat tak ci tak je to otrava.

Zpět do poradny Odpovědět na původní otázku Nahoru