| Как передать указатель на функцию в шаблон? | |
| От: | Слава | ||
| Дата: | 29.05.08 08:14 |
Например:
Спасибо за внимание |
| Re: this->*pFunk(¶ms[0]); | |
| От: | Erop | ||
| Дата: | 29.05.08 08:19 |
| Здравствуйте, Слава, Вы писали: С>
Скорее "как вызывать" Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском |
| Re[2]: this->*pFunk(¶ms[0]); | |
| От: | Слава | ||
| Дата: | 29.05.08 08:23 |
| Здравствуйте, Erop, Вы писали: E>Здравствуйте, Слава, Вы писали: С>>
Это проблему не решило E>Скорее "как вызывать" Да ты прав Спасибо за внимание |
| Re[3]: this->*pFunk(¶ms[0]); | |
| От: | Erop | ||
| Дата: | 29.05.08 08:26 |
| Здравствуйте, Слава, Вы писали: С>>>
С>Это проблему не решило Упс, проглядел, что у тебя класс-то другой, не экзекутор.!!! Вместо this надо использовать указатель на тот экземпляр TClass, метод которого ты хочешь позвать... Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском |
| Re: Как передать указатель на функцию в шаблон? | |
| От: | Bell | ||
| Дата: | 29.05.08 08:30 |
| Здравствуйте, Слава, Вы писали: Чтобы вызвать фунцию-член через указатель, нужно иметь объект, на котором будет производится вызов:
Любите книгу — источник знаний (с) М.Горький |
| Re[4]: this->*pFunk(¶ms[0]); | |
| От: | Слава | ||
| Дата: | 29.05.08 08:33 |
| Здравствуйте, Erop, Вы писали: E>Упс, проглядел, что у тебя класс-то другой, не экзекутор.!!! E>Вместо this надо использовать указатель на тот экземпляр TClass, метод которого ты хочешь позвать... ОК, написал так: emplate<class TClass,class TPar> class CExecutor { public: void setFunction(ULONG (TClass::*pFunc)(TPar*)) { this->pFunc=pFunc; } void ExecuteFunc(TPar params[],TClass* caller) { caller->*pTFunc(¶ms[0]);//error C2064: term does not evaluate to a function taking 1 arguments } private: ULONG (TClass::*pFunc)(TPar*); }; class test { public: test() { Ex.setThreadFunction(&test::TestFunc); } void ExecTestFunc() { TestFuncParams par[1]; par[0].bBolean=true; par[0].nInteger=50; par[0].ThreadNumber=10; Ex.ExecuteFunc(par,this); } private: ULONG test::TestFunc(TestFuncParams* pPar) { return 0; } CExecutor<test,TestFuncParams> Ex; }; Всё тоже самое Спасибо за внимание |
| Re[5]: this->*pFunk(¶ms[0]); | |
| От: | Bell | ||
| Дата: | 29.05.08 08:37 | ||
| Оценка: | 3 (1) | ||
| Здравствуйте, Слава, Вы писали: Не забываем про скобочки
Любите книгу — источник знаний (с) М.Горький |
| Re[5]: this->*pFunk(¶ms[0]); | |
| От: | Erop | ||
| Дата: | 29.05.08 08:50 | ||
| Оценка: | 3 (1) | ||
Здравствуйте, Слава, Вы писали:
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском |
| Re[6]: this->*pFunk(¶ms[0]); | |
| От: | Слава | ||
| Дата: | 29.05.08 09:26 |
| Здравствуйте, Bell, Вы писали: B>Здравствуйте, Слава, Вы писали: B>Не забываем про скобочки B>
Спасибо Спасибо за внимание |
| Re[6]: this->*pFunk(¶ms[0]); | |
| От: | Слава | ||
| Дата: | 29.05.08 09:26 |
| Здравствуйте, Erop, Вы писали: E>Здравствуйте, Слава, Вы писали: E>
Спасибо Спасибо за внимание |