The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Явное использование дочернего класса в родительском"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Явное использование дочернего класса в родительском"  
Сообщение от Udzhen (ok) on 29-Окт-08, 09:16 
Привет всем!
Возникла проблема. Проиллюстрирую ее на следующем примере:

class Base
{
public:
    Base() {}
    virtual ~Base() {}

private:
    Child m_p;
};

class Child : public Base
{
public:
    Child() {}
    virtual ~Child() {}
};

Сборка обламывается со следующим сообщением об ошибке: ‘Child’ does not name a type
Т.е. при явном использовании дочернего класса в родительском, компилятор требует объявления класса "Child" перед классом "Base", что в принципе и логично! Но класс "Child" является дочерним классом класса "Base", что в свою очередь требует объявления класса "Base" перед классом "Child"!
Предобъявление класса "Child" (class Child;) перед "Base" естественно не является решением, т.к. использование класса "Child" явное. Получается какая то рекурсия...
В принципе, я немного изменил архитектуру проекта избавившись от данной иерархии наследования, но возникшая проблема не дает мне покоя...
У кого какие будут предложения по решению этого вопроса? Или данная проблема фундаментальна?

Компилятор g++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu3)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "во всём виноват великий ленин"  
Сообщение от Andrey Mitrofanov on 29-Окт-08, 09:25 
>У кого какие будут предложения по решению этого вопроса?

Наймите програмиста.

>Или данная проблема фундаментальна?

Да. Проблема "создадим себе трудности, чтобы их героически преодолевать" фундаментальна и не решаема в рамках любого языка програмирования.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Явное использование дочернего класса в родительском"  
Сообщение от phpcoder email(??) on 29-Окт-08, 09:46 
>У кого какие будут предложения по решению этого вопроса?

Так лучше не делать. Если очень надо, то:
- перед определением класса Base добавить class Child;
- в классе Basе хранить не экземпляр класса Child, а указатель (или ссылку) на него (сооствественно понадобится конструктор, деструктор, конструктор копий и оператор присваивания определять)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Явное использование дочернего класса в родительском"  
Сообщение от Keeper email(??) on 29-Окт-08, 19:49 
Данный подход -- "Явное использование дочернего класса в родительском" -- явно противоречит идеологии объектно-ориентированного программирования и является ошибкой проектирования. Не делайте так. Нигде и никогда.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Явное использование дочернего класса в родительском"  
Сообщение от Аноним (??) on 30-Окт-08, 02:03 
>Данный подход -- "Явное использование дочернего класса в родительском" -- явно противоречит
>идеологии объектно-ориентированного программирования и является ошибкой проектирования. Не делайте так. Нигде
>и никогда.

Это ошибка здравого смысла. Обьект содержит сам себя. А тот ещё себя. ПОлучается бесконечная матрёшка )))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру