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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатель на шаблон... Как передать указатель на шаблон? 
:(
    Опции темы
afx
Дата 10.5.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

template<class TType1> class CMy1 {
            TType1 a;
       public:
             void SetA(TType1  ia) {a = ai;}
             void Show() {  // ... не важно что }; //не важно какая функция
             CMy1 () 
            {
                    AfxBeginThread( SomeFunct, ... ... , (LPVOID) this);
            }
             ~CMy1 () {};
};

UINT SomeFunct(LPVOID p)
{
     ((CMy1*) p)->Show();   //Вот здесь ошибка! При конвертации к типу CMy1
     return 0;
}

....
....



Всё перепробывал, ошибка не исправляется. Говорит, что надо тип в шаблоне указывать, но а мне надо
чтобы для любого типа работало. Подскажите как?  smile  
PM MAIL   Вверх
Darhazer
Дата 10.5.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

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



Нельзя сделать для любого типа так как при компиляцие компилятор делаеть из шаблонах конкретние класси
Нелья пользуват шаблона Run-Time  


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Fazil6
Дата 10.5.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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




Цитата

 мне надо чтобы для любого типа работало

насколько я понял смысл того, что ты пытаешься сделать здесь нужны не шаблоны, а наследование и виртуальная Show(). 
PM MAIL   Вверх
Romikgy
Дата 10.5.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(afx @  10.5.2006,  10:45 Найти цитируемый пост)
для любого типа работало

А где определение переменной
Цитата(afx @  10.5.2006,  10:45 Найти цитируемый пост)
LPVOID p

 smile  


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Neitron
Дата 10.5.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Забудь навсегда про передачу VOID.
Изначально задумка неправильная. 
Компилятор не знает для какого класса создающегося при помощи шаблона вызывать Show();  

В твоем случае ф-цию тоже нужно делать шаблонной. 

Это сообщение отредактировал(а) Neitron - 10.5.2006, 12:28


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
MAKCim
Дата 10.5.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



Цитата

Подскажите как?

передавай заодно и тип
Код

template<class Type> UINT SomeFunct(LPVOID p)
{
     ((CMy1<Type>*) p)->Show(); 
     return 0;
}

а вообще тут действительно (если правильно понял идею) нужны виртуальные ф-ии 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
afx
Дата 12.5.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за предложения, буду разбираться 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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