Re: doplnění prvků do struktury
Miroslav Mraz
mrazik na volny.cz
Středa Květen 8 14:37:13 CEST 2024
Nemůžu si pomoct, ale já v tom vidím typické použití dědičnosti v C++
(jak naznačil kolega Buchta)
struct x { // lépe třeba foo
int a, b;
virtual void output () {
printf("access allowed to a, b\n");
printf("a=%d, b=%d\n", a, b);
}
};
struct x_ext : public x { // dědíme data z x
int c, d;
void output() override {
printf("access allowed also to c, d\n");
x::output();
printf("c=%d, d=%d\n", c, d);
}
};
static void test () {
x x; // blbý nápad (lépe x y nebo foo x), ale proč ne
x.a = 1; x.b = 2;
x.output();
x_ext x_ext;
x_ext.a = 10; x_ext.b = 20;
x_ext.c = 30; x_ext.d = 40;
x_ext.output();
}
Výstup:
access allowed to a, b
a=1, b=2
access allowed also to c, d
access allowed to a, b
a=10, b=20
c=30, d=40
Nemusíte nutně začít používat virtuální metody. Můžete začít tím, že
něco napíšete jak jste zvyklý C-čkovou syntaxí, ale tak, aby to šlo
přeložit pomocí C++. Není to tak velký rozdíl. Budete muset častěji
explicitně přetypovávat. Nemusíte psát to explicitní struct foo nebo
dělat typedef struct {...} foo.
No a až si zvyknete, můžete zkusit třeba tu dědičnost, třídy, virtuální
funkce, přetěžování, default parametry atd. Dost to usnadňuje práci.
Není potřeba dávat to tam všechno najednou. Nebojte se toho, já v tom
dělám asi 30 let, ale i tak se někdy musím podívat do učebnice na
správnou syntaxi.
Mrazík
On 08. 05. 24 11:29, Miroslav Šinko wrote:
> Moj priklad nebol komletny, pisal som to vecer bez vyskusania.
> Takto, hoci lepsie by bolo strukrury definovat typedef-om:
> ...
Další informace o konferenci Hw-list