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

Обращение к свойству класса в динамической памяти - C++

Восстановить пароль Регистрация
 
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4
23.02.2014, 18:23     Обращение к свойству класса в динамической памяти #1
Здравствуйте!

Возникла проблема с обращением к свойству класса, расположенному в динамической памяти. Пойду по порядку. Создаю вот такой класс:
C++
1
2
3
4
5
6
7
8
9
10
class Number
{
private:
    double *num;
public:
    Number() {num = new double;}
    ~Number() {}
    void Set(double val) {*num=val;}
    double Get() {return *num;}
};
Если создать копию его объекта с помощью конструктора копирования по умолчанию, который использует побитовое копирование, его указатель num будет ссылаться на тот же участок памяти, что не есть хорошо, поэтому нужно указать конструктор копирования явно. Я это делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
class Number
{
private:
    double *num;
public:
    Number() {num = new double;}
    Number(Number& Obj) {num=new double(Obj.*num);}
    ~Number() {}
    void Set(double val) {*num=val;}
    double Get() {return *num;}
};
В итоге получаю ошибку в строке с конструктором копирования:
'((Number*)this)->Number::num' cannot be used as a member pointer, since it is of type 'double*'
При этом если вместо Obj.*num указать просто число, то всё компилируется и работает как надо. Поэтому мне кажется, что я как-то не правильно записываю обращение к значению указателя num. Как это сделать корректно?
Заранее огромное спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 18:23     Обращение к свойству класса в динамической памяти
Посмотрите здесь:

C++ Двумерный массив в динамической памяти как поле класса
C++ Обращение к методу объекта размещенного в динамической памяти
C++ Указатель,объект класса размещенный в динамической памяти
C++ Выделение динамической памяти под массив из класса
Размещение класса в динамической памяти C++
Объект класса в динамической памяти C++
C++ Как создать объект класса в динамической памяти?
C++ Не удается обратиться к свойству класса из метода класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
23.02.2014, 18:26     Обращение к свойству класса в динамической памяти #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
Number(const Number& Obj) {num=new double(*Obj.num);}
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4
23.02.2014, 19:46  [ТС]     Обращение к свойству класса в динамической памяти #3
DU, спасибо, вы очень помогли!
Yandex
Объявления
23.02.2014, 19:46     Обращение к свойству класса в динамической памяти
Ответ Создать тему
Опции темы

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