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

С++ оператор присвоения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти самое длинное слово http://www.cyberforum.ru/cpp-beginners/thread1003585.html
Здравствуйте. Мне нужно найти самое длинное слово в предложении и его порядковый номер. Как сделать, чтоб ввод завершался с нажатием клавиши "Enter", а не нажиманием Ctrl+Z на новой строке, как сейчас. И можно ли вводить русский текст? #include <iostream> #include <string> #include <iterator> using namespace std; typedef istream_iterator< string> str_in_it;
C++ Подсчет количества вершин дерева на заданном уровне Напишите пожалуйста Проги для нахождения количества вершин для дерева на заданном уровне, и кто сможет помогите посчитать сложность алгоритма http://www.cyberforum.ru/cpp-beginners/thread1003551.html
C++ Подключение библиотек в MVS12E
Здравствуйте, я начал изучать программирование на С++ OpenGL. Я нашел туториал, в котором написано, что нужно подключить библиотеки OpenGL32.lib GLu32.lib GLaux.lib Вот у меня возникает вопрос, где их взять и как их подключить? Я использую Microsoft Visual Studio 2012 Express буду благодарен, если вы мне поможете.
C++ Организация библиотеки
Написал набор классов и функций для своего удобства, чтобы подключать их в любом проекте. Всего получилось 35 файлов. Поместил я эти файлы и деректорию Include моей студии. Когда в проекте подключаю файл и использую какую либо функцию, выпадает ошибка, ССылка на нерасрешенную лексему..... Исправляется все если я все эти файлы складываю в папку проекта и ВКЛЮЧАЮ их а сам проект. Что я не так...
C++ Абстрактные и производные классы С++ http://www.cyberforum.ru/cpp-beginners/thread1003517.html
Проблема: Есть базовый класс "Фигура", и производные: "Точка", "Круг", "Прямоугольник", "Треугольник". Надо сделать чистую виртуальную функцию Transform, и переопределить её в производных классах. Принцип работы функции Transform: функция должна трансформировать точку в круг, круг в прямоугольник, прямоугольник в треугольник. Когда я пытался реализовать данную функцию то наткнулся на...
C++ Ошибка с классом в C++ #include <iostream> using namespace std; class Cat { public: Cat(int initAge); ~Cat(); void SetAge(int age); int GetAge(); private: int Age; подробнее

Показать сообщение отдельно
Shaman163
4 / 4 / 0
Регистрация: 22.12.2011
Сообщений: 134
10.11.2013, 17:28     С++ оператор присвоения
Всем доброго времени суток.
Я написал класс в котором имеется приватный указатель или вернее 2 мерный массив.
Выглядит он вот так вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    class Bitmap
    {
        protected:
            Pixel** pixels = nullptr;
            Vector2 Size;
 
        public:
            //= Конструкторы / Деструкторы =============================
            Bitmap();
            virtual ~Bitmap();
            Bitmap(Vector2 size);
 
            //= Возращающие ============================================
            Pixel   GetPixel(Vector2 position);
 
            //= Перегруженные операторы ================================
            //Bitmap operator=(const Bitmap right);
 
    };
Проблема в том, что при присвоении через оператор '=' я натыкаюсь на неизбежную ошибку во время деструкции.
Как то так например:
C++
1
2
3
Bitmap amp = Bitmap(Vector2(25,25));
Bitmap bmp = amp;
// При уничтожении amp, ресурсы на которые ссылается bmp так же прекратят своё существование
Я попытался переписать оператор присвоения, пока что тупо с помощью инициализации.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Bitmap Bitmap::operator=(const Bitmap right)
    {
        //проверка на самоприсваивание
        if (this == &right)
        {
            return *this;
        }
 
        Size = right.GetSize();
        pixels = new Pixel*[Size.x]();
        for(unsigned int x = 0; x < Size.x; x++)
            pixels[x] = new Pixel[Size.y]();
 
        return *this;
    }
Ошибка всё равно вылазит.
Помогите, что я делаю не так???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru