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