Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Указатель на шаблон...


Автор: afx 10.5.2006, 11:45
Код

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  

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

Автор: Fazil6 10.5.2006, 11:58

Цитата

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

насколько я понял смысл того, что ты пытаешься сделать здесь нужны не шаблоны, а наследование и виртуальная Show(). 

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

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

 smile  

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

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

Автор: MAKCim 10.5.2006, 19:08
Цитата

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

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

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

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

Автор: afx 12.5.2006, 16:39
Спасибо за предложения, буду разбираться 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)