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

List (STL) не пользуется конструкторами копий базовых классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Hash+++ http://www.cyberforum.ru/cpp-beginners/thread973801.html
Скажите пожалуйста где скачать Hash subj и Hash on coure it
C++ templates, STL ПЕРВОЕ средства обобщенного программирования в С++ (templates) ВТОРОЕ библиотека STL, контейнеры и алгоритмамы STL в чем разница первого и второго? спасибо. http://www.cyberforum.ru/cpp-beginners/thread973769.html
Задача со звездочками C++
Пользователь вводит число, а компьютер должен вывести на экран пирамидку, с такой высотой как число Например, пользователь ввел 3 * ** *** ** *
SDL Отображение текста на экране C++
Вывожу на экран текст формата *.ttf c помощью функции TTF_Render Эта функция может выводить только текст, а вот как вывести значение переменной? // *.h struct C_LoadImages { void ttfInit();...
C++ Странная ошибка http://www.cyberforum.ru/cpp-beginners/thread973662.html
// ConsoleApplication5.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <vector> #include <cmath> #include <math.h> using namespace...
C++ Пользователь вводит вещественные числа x,y,z. Вычислить max(x+y+z, xyz) Составить ДВЕ программы на языке C++ для решения одного из вариантов заданий с применением ОПЕРАТОРА if и с применением условий операции. Пользователь вводит вещественные числа x,y,z.Вычислить... подробнее

Показать сообщение отдельно
Deimon
35 / 35 / 2
Регистрация: 29.08.2009
Сообщений: 178

List (STL) не пользуется конструкторами копий базовых классов - C++

10.10.2013, 13:13. Просмотров 548. Ответов 5
Метки (Все метки)

Ситуация:
Производный класс образован от двух базовых. Базовые классы не пустые, в одном хранится ссылка на картинку Grphics::TBitmap, а в другом числовые значения:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Image {
  private:
    GTB * mImage;
  protected:
    ~Image( void);
    Image( void);
    Image( const Image&);
        //остальные методы
};
 
class Object {
  private:
    TPoint mPos;
  protected:
    ~Object( void); 
    Object( void);
    Object( const Object&); 
        //остальные методы
};
 
class GraphicObject : public Image, public Object {
  private:
    //параметры
  protected:
    //параметры
  public:
    GraphicObject( void);
    ~GraphicObject( void);
    GraphicObject( const GraphicObject&);
    //остальные методы
};
Я добавляю объекты производного класса (GraphicObject) в список (list), который сам увеличивает свою емкость, применяя конструктор копий. И вот когда он запускает конструктор копий производного класса, почему-то он запускает обычные конструкторы базовых классов, и они оказываются пустыми. Что нужно сделать, чтобы STL библиотеки везде применяли конструкторы копий?!

И второй вопрос, который вызывает тот же самый эффект отсутствия данных в скопированном объекте.
В список новый элемент я добавляю так: создаю временный новый, заношу параметры и копирую его в список.
C++
1
2
3
4
  GraphicObject temp;
  temp.LoadAnimation( 8, 100, false, "./simple.BMP");
  temp.SetPosition(x,y);
  Box.push_back(GraphicObject(temp));
При копировании точно так же себя ведет - запускает конструктор копий производного класса и обычные конструкторы базовых. Как сделать копирование полноценным?

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