Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение типа объекта в нетипизированном классе, или как то так :) 
V
    Опции темы
fear
Дата 25.3.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 16.4.2006

Репутация: 1
Всего: 1



Цитата(mes @  25.3.2008, 01:16)
ну создал ты объект а что ты потом с ним делать будешь?

буду использовать
Код

    template<typename T>
    T &value()
    {
      return static_cast<T &>(*static_cast<T *>(ptr));
    }

Цитата(mes @  25.3.2008, 01:16)
а вобше чтоб создать в с++ в рантайме объект по условному имени, надо для каждого объекта иметь функцию создания и иметь словарь в котором каждому условному имени будет соответствовать нужная create-функция.

и этот подход видимо - единственный... Только не укладывается в голове, почему если имеется возможность сохранить информацию о типе внутри класса, отсутствует возможность использовать непосредственно эту информацию для создания класса того же типа.
PM MAIL   Вверх
bsa
Дата 25.3.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



fear
Код
class A {};
class B : public A{};
int main()
{
     A *p = new B;
     //как узнать, на объект какого класса указывает p, не изменяя класс A?
     return 0;
}

PM   Вверх
fear
Дата 25.3.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 16.4.2006

Репутация: 1
Всего: 1



bsa, как?

Добавлено через 9 минут и 6 секунд
UnrealMan, спасибо, такой подход решает поставленный вопрос.
PM MAIL   Вверх
bsa
Дата 25.3.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



fear, в том то и дело, что никак. Это я к Только не укладывается в голове, почему если имеется возможность сохранить информацию о типе внутри класса, отсутствует возможность использовать непосредственно эту информацию для создания класса того же типа. Так как в данном случае информация не сохраняется. Чтобы она сохранилась, нужно сделать виртуальный деструктор (ну или другой виртуальный метод, но виртуальный деструктор в любом случае делать надо). А раз есть деструктор, то кто мешает сделать виртуальный метод clone()...
Как вариант, можно фабрику замутить...
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.