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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс-шаблон 
:(
    Опции темы
Madest
Дата 14.7.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Допустим есть класс:
Код
template<class T>
class AAA
{
public:
AAA();
T* pt;
};

Как создать объект этого класса, не указав тип Т? Тип будет известен при выполнении.
Пробовал создать ссылку на него AAA* aaa, но потом не могу привести к заданному типу
aaa=new AAA<WORD>; - не работает.
aaa=(AAA*)new AAA<WORD>; - при обращении к pt - Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast.
--------------------
PM MAIL   Вверх
Vyacheslav
Дата 14.7.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Код

struct BaseClass{};

template<class T>
class AAA : public BaseClass
{
public:
AAA();
T* pt;
};

BaseClass *pb = new AAA<WORD>; 



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Earnest
Дата 14.7.2005, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Цитата(Madest @ 14.7.2005, 15:16)
Как создать объект этого класса, не указав тип Т? Тип будет известен при выполнении.

Никак. Все параметры шаблона должны быть известны во время компиляции. Шаблоны обеспечивают только статический полиморфизм, который разрешается в момент компиляции.
Тип "просто AAA" не существует, типы AAA<int> и AAA<WORD> - абсолютно разные и к друг другу не приводятся. Полиморфизм времени выполнения обеспечивают виртуальные функции.



--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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