Аргумент шаблона - указатель на метод класса
От: Vasilisk  
Дата: 08.05.02 17:09
Оценка:
А точнее его значение по умолчанию.
Вопрос заключается в том, как это самое значение по умолчанию для подобных шаблонов записать-то?

template<class Event, class FireClass, class FireFunc>
class SomeTroubledClass
{
FireClass *pC;
FireFunc pCFuncVar;
...
...
void someF(SomeArg *ev)
{
if(pC&&pCFuncVar) (pC->*pCFuncVar)(ev);
}
};

А методом по умолчанию (значение по умолчанию для аргумента FireFunc) должно быть что-то типа:

typedef void (SomeClass::* NeededType)(SomeArg*);

естественно SomeClass — это будет значение по умолчанию для аргумента "сlass FireClass".

Т.е.:

template<class Event, class FireClass=FireClass, class FireFunc=?????>
class SomeTroubledClass
{
...
...

Можно ли такое как-либо записать, и если можно, то как?

Заранее благодарен за любую полезную информацию на сей счет.
Re: Аргумент шаблона - указатель на метод класса
От: Vasilisk  
Дата: 08.05.02 17:14
Оценка:
Ошибочка вышла. Конечно же желаемый вид заголовка шаблона следующий:

template<class Event, class FireClass=SomeClass , class FireFunc=?????>
class SomeTroubledClass
{
...
...
Re[2]: Аргумент шаблона - указатель на метод класса
От: Андрей Тарасевич Беларусь  
Дата: 08.05.02 17:35
Оценка:
Здравствуйте Vasilisk, Вы писали:

V>Ошибочка вышла. Конечно же желаемый вид заголовка шаблона следующий:


V>template<class Event, class FireClass=SomeClass , class FireFunc=?????>

V>class SomeTroubledClass
V>{
V>...
V>...

Хм. Не понимаю проблемы. Ты же почти все уже сделал. Просто используй свой typedef:

template<class Event, class FireClass = SomeClass, class FireFunc = NeededType >
class SomeTroubledClass 
{
  ...


Или без typedef:

template<class Event, class FireClass = SomeClass, class FireFunc = void (SomeClass::*)(SomeArg*) >
class SomeTroubledClass 
{
  ...
Best regards,
Андрей Тарасевич
Re[3]: Аргумент шаблона - указатель на метод класса
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 08.05.02 17:39
Оценка: 11 (1)
Здравствуйте Андрей Тарасевич, Вы писали:

Правильнее:
АТ>
АТ>template<class Event, class FireClass = SomeClass, class FireFunc = void (FireClass::*)(SomeArg*) >
АТ>class SomeTroubledClass 
АТ>{
АТ>  ...
АТ>
Re[4]: Аргумент шаблона - указатель на метод класса
От: Андрей Тарасевич Беларусь  
Дата: 08.05.02 18:50
Оценка:
Здравствуйте DarkGray, Вы писали:

DG>Правильнее:

АТ>>
АТ>>template<class Event, class FireClass = SomeClass, class FireFunc = void (FireClass::*)(SomeArg*) >
АТ>>class SomeTroubledClass 
АТ>>{
АТ>>  ...
АТ>>


Согласен. Но что-то мне шестое чувство подсказывает, что исходный вопрошавший сейчас нам всем объяснит, что он все-таки хотел нетиповой (non-type) параметр шаблона.
Best regards,
Андрей Тарасевич
Re[5]: Аргумент шаблона - указатель на метод класса
От: Vasilisk  
Дата: 13.05.02 07:29
Оценка:
Благодарю всех за проявленое к моему вопросу внимание и оказанную помощь!

Здравствуйте Андрей Тарасевич, Вы писали:

АТ>Согласен. Но что-то мне шестое чувство подсказывает, что исходный вопрошавший сейчас нам всем объяснит, что он все-таки хотел нетиповой (non-type) параметр шаблона.


Обязан с прискорбием сообщить, что в данном случае шестое чувство вас подвело (интересно, а что такое non-type параметр???).

PS Чисто из любопытства: а как все таки определить такой шаблончик с использованием typedef? (можно увидеть полный заголовок шаблона и предварительного typedef-а?)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.