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

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

Войти
Регистрация
Восстановить пароль
 
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4
#1

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

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

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

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

Объект класса в динамической памяти - C++
Привет. Вот листинг: #include <iostream> using namespace std; class SimpleCat { public: SimpleCat(int age, int weight) {...

Указатель,объект класса размещенный в динамической памяти - C++
Ребят,такой маленький нелепый вопрос. Как можно обратиться к объекту класса созданному в динамической памяти(через "new")?; В моей книге...

Выделение динамической памяти под массив из класса - C++
Допустим, есть class c, и он включает в себя char-массив a: class c { private: char a; public: c(); c(char* a); }

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

Утечка памяти при создании динамической переменной класса - C++
Никак не могу исправить проблему утечки памяти при создании динамической переменной класса class Ship { private: int maxHeight; ...

Двумерный массив в динамической памяти как поле класса - C++
Здравствуйте! Вот так можно описать двумерный массив в дин.памяти. class nameClass { public: MapPlaceTp ** roomMap; ...

Не удается обратиться к свойству класса из метода класса - C++
Пишу хедер для работы с файлами такой структуры: nametype1 name1 name2 name3 name4 nametype2

Как обратиться к свойству класса - C++
Нубский вопрос, вот код: #include "stdafx.h" #include <iostream> using namespace std; class...

Обращение к динамической структуре через массив указателей - C++
При попытке обратиться к элементу динамической структуры через связанный с ним элемент массива указателей выдаёт ошибку (со строчки 73): ...

Обращение в методах класса к полям класса - C++
Добрый вечер! Подскажите пожалуйста правильное обращение в методах класса к полям класса. class X {char name ; double zar; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 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     Обращение к свойству класса в динамической памяти
Ответ Создать тему
Опции темы

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