Problemy s gcc

Jan Pytel pytel na Panda.fsv.cvut.cz
Sobota Září 23 13:57:24 CEST 2000


> > Jeste k dotazu na volani konstruktoru:
> > Neexistuje nejaky jiny zpusob? Definovat kvuli tomu novy operator new
> > se mi moc nechce, uz z toho duvodu, ze ta puvodni classa o tom, ze ji
> > budu pouzivat timto zpusobem, nemusi vubec vedet.
>
> Proc porad mluvite o novem operatoru? gcc nema built-in
> placement new? A jakou normu C++ ze dodrzuje???

Dobry den,

novy operator definovat opravdu nemusite, zkuste to udelat takto:

#include <iostream>
#include <new>

class X {
      double pi;
      char* xyz;
public:
        X() { std::cout << "Volan konstruktor " << this << endl; }
       ~X() { std::cout << "Volan destruktor  " << this << endl; }
};

int main()
{
        using namespace std;

        // Alokace hrube pameti  (nevola se konstruktor)
        X* A = (X*)operator new(sizeof(X));

        cout << "Adresa alokovane pameti A: " << A << endl;

        X* B = new(A) X;

        cout << "Adresa alokovane pameti B: " << B << endl;

        delete B; // ==  delete A;
}


Na mem pocitaci preklad (pomoci g++) bez problemu.
(
$ g++ -v
Reading specs from /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/specs
gcc version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release)
).

Zdravim,
Jan Pytel




Další informace o konferenci Linux