Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tworzenie obiektu za pomocą malloc

Ostatnio zmodyfikowano 2011-03-07 14:15
Autor Wiadomość
DejaVu
Temat założony przez niniejszego użytkownika
Tworzenie obiektu za pomocą malloc
» 2011-03-07 12:30:35
Chcę stworzyć obiekt za pomocą funkcji malloc - problem mam z poprawnym politycznie wywołaniem konstruktora klasy. Kod wygląda następująco:
C/C++
#include <cstdlib>

class klasa
{
public:
    klasa( int a, int b, int c ) { }
};
int main()
{
    klasa * test =( klasa * ) malloc( sizeof( klasa ) );
   
    new( test ) klasa( 1, 2, 3 ); //Próba 1: nie działa
   
    test->klasa( 1, 2, 3 ); //Próba 2: nie działa
    return 0;
}
Zetknąłem się już z operatorem placement new, jednak nie stosowałem go jeszcze w sytuacjach w których nie posiadam konstruktora domyślnego.

Wie ktoś jak to osiągnąć?

Błędy kompilacji

Próba 1

error C2661: 'operator new' : no overloaded function takes 2 arguments

Próba 2

error C2273: 'function-style cast' : illegal as right side of '->' operator
P-28961
Elaine
» 2011-03-07 13:22:05
Aby użyć placement new, należy najpierw dołączyć nagłówek <new> lub samemu zdefiniować placement new.
P-28965
DejaVu
Temat założony przez niniejszego użytkownika
» 2011-03-07 14:15:03
C/C++
#include <new>

Dzięki :) Dopisanie powyższego wiersza rozwiązało sprawę :)

/edit:
http://cpp0x.pl/dokumentacja/C++/placement-new/826
P-28970
« 1 »
  Strona 1 z 1