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

Виртуальные конструкторы или выбор паттерна проектирования - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где ошибка? http://www.cyberforum.ru/cpp-beginners/thread1143411.html
Помогите, пожалуйста, на сайте дистанционной проверки пишет "Ошибка компиляции". Пирожок в столовой стоит a рублей и b копеек. Определите, сколько рублей и копеек нужно заплатить за n пирожков. Программа получает на вход три числа: a, b, n и должна вывести два числа: стоимость покупки в рублях и копейках. Пример Ввод Вывод 10 20 30 15 2
C++ Двумерные массивы: построить массив по правилу Дан массив А. Построить массив B(6) по следующему правилу: B(1) присвоить количество нулевых элементов главной диагонали, B(2) присвоить количество нулевых элементов диагонали, расположенной выше и параллельно главной диагонали и т.д. http://www.cyberforum.ru/cpp-beginners/thread1143408.html
C++ Много ошибок
#include <iostream> using namespace std; double F(double X){ return (pow((sin(X) - 2 * cos(2 * X)), 2)); } int main() { int Cond = 0, k = 0, metka = 1, KolIter; double X, E, Y1, Y2, RE = 0, Xw, h;
Вывести число итераций, необходимое для достижения заданной точности C++
Здравствуйте. Помогите решить: Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью ε (табл. 8.1). Вывести число итераций, необходимое для дос-тижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.
C++ Написать функцию, возвращающую случайное число от 2 до 6 http://www.cyberforum.ru/cpp-beginners/thread1143303.html
Покажите как будет выглядеть программа подставляющая числа от 2до6 (рандом) в формулу ПR(5 результатов) Добавлено через 6 минут подпрограмма
C++ Рассчитать квадратный корень из любого элемента массива и среднеее арифметическое двух любых элементов Дан массив. Составить программу: а) расчета квадратного корня из любого элемента массива; б) расчета среднего арифметического двух любых элементов массива. подробнее

Показать сообщение отдельно
newbie666
Заблокирован
09.04.2014, 16:53  [ТС]     Виртуальные конструкторы или выбор паттерна проектирования
Цитата Сообщение от newbie666 Посмотреть сообщение
Мне нужно чтоб в моей программе всегда был один экземпляр и Miracle и Renderer и GameProcesor, и хотелось бы, чтоб в каждом из наследников были данные из Miracle. Причём заранее что будет в Miracle - неизвестно, так как проект на стадии проектирования, каждый раз передавать тонну параметров в наследников - не коширно, передавать указатель на базовый Miracle - ну так я ща так и делаю... А вот хотелось бы, чтоб , ну хрен с остальными, что допустим эти три классы существовали в единственном экземпляре и в каждом наследнике были унаследованные данные из ОДНОГО И ТОГО ЖЕ базового класса Miracle.
Так вот:
1. Хочу создать один экземпляр базового класса
2. Хочу создать два дочерних класса, после создания базового, чтоб в этих дочерних классах были данные одного и того же базового

Мне это нужно чисто для удобства работы, т.к. если передавать во все классы указатель на общий класс, приходится долго дустукиваться до нужных данных, например: base->child1->child2->child3->getData()

Добавлено через 3 минуты
P.S.: в С++ ясно такой возможности не хватает. очень много где читал, что челы извращаются для достижения этой цели...
Было бы круто, если б я создал например базовый класс, а потом, просто отдельно, создавал бы дочерний от базового класс, но при этом в скобках бы указывал допустим указатель на существующий базовый класс, чтоб у него конструктор не вызывался, а просто все его данные перетекли бы в дочерний класс... Понятно излагаю ?

Добавлено через 21 минуту
Я вот на чём продемонстрирую суть вопроса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Base
{
public:
    Base(){};
    ~Base(){};  
    int baseData;
};
 
class Child : public Base
{
public:
    Child(){};
    ~Child(){}; 
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Base *base = new Base;
    base->baseData = 33;
    Child *child = new Child;       
    return 0;
}
Вот смотрите, я создаю экземпляр базового класса Base *base = new Base;, устанавливаю значение переменной в нём base->baseData = 33;, далее я создаю экземпляр дочернего класса
C++
1
Child *child = new Child;
. Так вот, при создание дочернего класса, он понятное дело вызовет конструктор базового, в результате в дочернем классе будет переменная базового класса с мусором, т.к. она никак не инициализировалась, а я хочу сделать так, чтоб при создание дочернего класса в нём была переменная базогово, равная в моём случае 33-м, тоесть чтоб при создание дочернего класса, он как бы создавался от уже существующего базового со всеми его значениями

Добавлено через 9 минут
ааа В общем парни забейте, автоматического средства нет
Придётся в каждом классе делать конструктор, в который передаётся родитель данного класса и в этом конструкторе устанавливаются ВРУЧНУЮ все переменные текущего класса исходя и данных переданного указателя... Ээххх вручную.... добавил переменную - переписывай конструктор
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
32
33
34
35
36
37
38
class Base
{
public:
    Base(){};
    ~Base(){};  
    int baseData;
};
 
class Child : public Base
{
public:
    Child(){};
    Child(Base* base)
    {
        baseData = base->baseData;
    }
    ~Child(){}; 
};
 
class Child2 : public Child
{
public:
    Child2(){};
    Child2(Child* child)
    {
        baseData = child->baseData;
    }
    ~Child2(){};    
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Base *base = new Base;
    base->baseData = 33;
    Child *child = new Child(base); 
    Child2 *child2 = new Child2(child);
    return 0;
}
 
Текущее время: 22:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru