c++ volanie konstruktora v konstruktore

Sekcia: Programovanie 27.11.2006 | 17:03
Avatar Frantisek Klabzuba Debian  Používateľ
Ahoj. Narazil som na taky problem. Mam objekt ktory ma dva konstruktory, jeden prazdny, druhy s nejakym parametrom. V tom druhom by som chcel volat ren prazdny ale nejak to nejde, proste akoby sa nevolal. Skompilovat to ide. class Prvy { }; class Druhy { Prvy * n; Druhy(); Druhy(int i); } Druhy::Druhy() { n = new Prvy(); } Druhy::Druhy(int i) { Druhy(); if (!n) printf("N sa nealokoval!\n"); } V programe mam: Druhy d = new Druhy(123); Vypise "N sa nealokoval!" Co s tym?
    • Re: c volanie konstruktora v konstruktore 26.11.2006 | 00:45
      Avatar borg Arch, Debian jessie  Administrátor
      nemozes volat konstruktor v konstruktore. to vnutorny konstrukor vytvori objekt, ale nikam sa nepriradi. vonkajsi vrati objekt ale bez inicialozovaneho n, lebo v tom vnutornom ho neincializujes. Druhy::Druhy() Initialize(); } Druhy::Druhy(int i) { Initialize(); //nieco s i } void Druhy::Initialize() { //
      • Re: Re: c volanie konstruktora v konstruktore 26.11.2006 | 00:49
        Avatar borg Arch, Debian jessie  Administrátor
        a navyse nemozes volat konstruktor priamo (okram konstruktora zakladnej triedy pri jej inicializacii v konstruktore odvodenej triedy)
    • Re: c volanie konstruktora v konstruktore 26.11.2006 | 14:14
      jv   Návštevník
      Druhy(); Toto nikdy nerob... Jednoducho konstruktor nie je funkcia.
    • Re: c volanie konstruktora v konstruktore 27.11.2006 | 17:03
      thsomash   Návštevník
      a len tak mimochodom este musis uvolnit alokovanu pamet v destrukore (delete) inak dojde k uniku pameti a to by si asi nechcel