Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4
1

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

23.02.2014, 18:23. Просмотров 239. Ответов 2
Метки нет (Все метки)

Здравствуйте!

Возникла проблема с обращением к свойству класса, расположенному в динамической памяти. Пойду по порядку. Создаю вот такой класс:
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. Как это сделать корректно?
Заранее огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 18:23
Ответы с готовыми решениями:

Обращение к методу объекта размещенного в динамической памяти
Я начинающий C++ ученик, изучил базовые классы, указатели и дошел до темы...

Объект класса в динамической памяти
Привет. Вот листинг: #include <iostream> using namespace std; class...

Размещение класса в динамической памяти
Добрый день! Интересует такой вопрос, который я никак не пойму: Есть класс...

Выделение динамической памяти под массив из класса
Допустим, есть class c, и он включает в себя char-массив a: class c {...

Указатель,объект класса размещенный в динамической памяти
Ребят,такой маленький нелепый вопрос. Как можно обратиться к объекту класса...

2
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
23.02.2014, 18:26 2
C++
1
Number(const Number& Obj) {num=new double(*Obj.num);}
1
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4
23.02.2014, 19:46  [ТС] 3
DU, спасибо, вы очень помогли!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2014, 19:46

Как создать объект класса в динамической памяти?
привет. я так понял, можно создать объект в динамической области памяти. либо...

Двумерный массив в динамической памяти как поле класса
Здравствуйте! Вот так можно описать двумерный массив в дин.памяти. class...

Утечка памяти при создании динамической переменной класса
Никак не могу исправить проблему утечки памяти при создании динамической...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru