Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Как для класса написать перегруженный оператор new? - C++

16.07.2013, 14:12. Просмотров 332. Ответов 5
Метки нет (Все метки)

пробую таким способом, но ошибка

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class X
{
public:
    X(int x) :mX(x) {  }
 
    void SetX(int x)  { mX=x; }
    int GetX() const  { return mX; }
    void *operator new(size_t size, void *p)  { return p; }
 
private:
    int mX;
};
 
 
main.cpp:
void *buf = reinterpret_cast<void *>(0xF00F);
X *p2 = new(buf)X;  // error C2512: X: нет подходящего конструктора по умолчанию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 14:12     Как для класса написать перегруженный оператор new?
Посмотрите здесь:

Перегруженный оператор () для std::set C++
C++ Класс для работы с матрицами - Что дает перегруженный оператор индексирования?
Как правильно перегрузить оператор для шаблона класса C++
C++ Перегруженный оператор сдвига '<<' не функции-члена класса для объекта ostream
C++ Как убрать символ новой строки, применяя перегруженный оператор <<?
Функтор и перегруженный оператор C++
C++ Перегруженный оператор
C++ Как использовать перегруженный оператор [ ], если дан не сам класс, а указатель на него?
Как перегрузить оператор для своего класса? C++
Определить перегруженный бинарный и унарный оператор* для класса "Комплексное число" C++
C++ Не работает перегруженный оператор + для класса динамической матрицы
C++ Не работает перегруженный оператор

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.07.2013, 14:16     Как для класса написать перегруженный оператор new? #2
Потому что конструтора по умолчанию нет
C++
1
X *p2 = new(buf)X(5);
Так прокатит?
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
16.07.2013, 14:44  [ТС]     Как для класса написать перегруженный оператор new? #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
X *p2 = new(buf)X(5);
При запуске программы сразу выскакивает ошибка. Необработанное исключение win32

Добавлено через 24 минуты
up.
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
16.07.2013, 16:26     Как для класса написать перегруженный оператор new? #4
А вы что этим вообще делаете:
Код
void *buf = reinterpret_cast<void *>(0xF00F);
X *p2 = new(buf)X(5);
?
вернее, вы понимаете что вы этим делаете?
Tulosba
:)
Эксперт С++
4387 / 3230 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
16.07.2013, 16:32     Как для класса написать перегруженный оператор new? #5
Цитата Сообщение от BigLow Посмотреть сообщение
C++
1
void *buf = reinterpret_cast<void *>(0xF00F); X *p2 = new(buf)X;
Чего Вы этим хотели добиться? Записать по адресу 0xF00F система, скорее всего, не даст.
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
16.07.2013, 16:34     Как для класса написать перегруженный оператор new? #6
курните этого:
http://www.amse.ru/courses/cpp2/2011_03_21.html
Yandex
Объявления
16.07.2013, 16:34     Как для класса написать перегруженный оператор new?
Ответ Создать тему
Опции темы

Текущее время: 03:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru