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