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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать объяснительную записку к коду http://www.cyberforum.ru/cpp-beginners/thread1103566.html
Написал код для курсовой а вот надо ещо обьяснительную записку но не знаю как её писать кто может помоч буду оч благодарен ! Вот код #include <iostream> //стандартная библиотека #include...
C++ Создание объектного файла с использованием программного кода Интересует вопрос, как создать объектный файл, некоторой, программы на C++, из другой программы? То есть, имеется файл temp.cpp и я хочу получить temp.o. А это я делаю с помощью исполняемого файла... http://www.cyberforum.ru/cpp-beginners/thread1103560.html
C++ Как определить символ конца строки
Всем доброго времени суток! Работаю в VS2012 Такая задача - работаю со строками. Считываю файл (построчно функцией getline). И мне дозарезу нужен символ конца строки. Я понимаю, что можно...
Вывести сообщение "Можно", если из букв введенной строки X можно составить введенную строку Y C++
Не могу понять самой сути задания. Вывести сообщение "Можно", если из букв введенной строки X можно составить введенную строку Y,при условии что каждую букву строки X можно использовать один раз;...
C++ Ошибка в слиянии. Первый элемент массива не сортируется http://www.cyberforum.ru/cpp-beginners/thread1103536.html
Добрый день, возникла ошибка в алгоритме слияния. Проблема в том, что когда вывожу результат - первый элемент массива не отсортирован. Буду признателен, если скажите почему? в программе также...
C++ Работа с шаблонами и ошибка "Undefined reference" только приступил к изучению шаблонов и сразу куча вопросов и проблем прошу объяснить мне на пальцах почему не работает matrix.h #ifndef MATRIX_H #define MATRIX_H #include <iostream> #include... подробнее

Показать сообщение отдельно
Gelor
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 4

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

23.02.2014, 18:23. Просмотров 199. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru