Re[2]: как placement new пишется?
От: Honduras  
Дата: 29.05.14 06:35
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Здравствуйте, Аноним, Вы писали:



J>#include <memory> ?


#include <memory> — лечит спсб! Именно он не <new> . Вообще вроде как встроенная вещь, так вдруг может и #include <continue> для continue понадобиться


взяли пример http://www.sourcetricks.com/2008/05/c-placement-new.html и к общему привел — CS ошибка ( без <memory> ), MyClass проходит — одни и теж коды
//#include <memory>
class CS
{   public:
    char *data;
    /*
    CS()
    {

    };
    */
};

int main0000(int argc, char *argv[])
{
   // void *z;
    int z[16];
    CS *x=new(z)  CS();   // ТОЛЬКО ЗДЕСЬ ОШИБКА
    return 0;
}


#include <iostream>
using namespace std;

class MyClass {

   public:

    // Placement new operator
    /*
    void* operator new (size_t sz, void* v) {
        cout << "Placement new invoked" << endl;
        return v;
    }
     */
    ~MyClass() {
        // Cleanup
    }
};

int main()
{
    // Create a buffer to store the object
    int buffer[16];
    cout << "Starting address of my buffer = " << &buffer << endl;

    // Create the object. Use placement new
    MyClass* obj = new (buffer) MyClass();
    cout << "Location of my object = " << obj << endl;

    // Don't delete object created with placement delete
    // Call the destructor explicitly
    obj->~MyClass();
}
Здесь http://www.cplusplus.com/reference/new/operator%20new/ new описан как глобальный ( не член класса ), тоже с 2-мя параметрами, который компилятор предлагает, значит видит?
new
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.