【发布时间】:2012-06-07 10:48:10
【问题描述】:
我正在尝试在 C++ 中声明一个模板函数指针。
template <class T>
class MyClass
{
public:
typedef const unsigned char* (T::*MyTemplatedEvent)(unsigned long &myParameter);
};
但由于某种原因,我不断收到此错误:
'T': 后跟'::'时必须是类或命名空间
谁能告诉我我做错了什么?
编译器应该知道 T 是一个类。它在 MyClass 声明上方这么说...
【问题讨论】:
-
我认为在
T::之前需要一个typename。让我检查一下。 -
此外,成员函数指针不好。只需使用
std::function就不会出现问题。 -
Compiles fine,你用的是哪个编译器?
-
那么可能是编译器错误。您可能需要向 Microsoft 团队报告。
-
@mikhail:这是代码。只需尝试使用“int”作为模板创建此类的实例,就是这样:)
标签: c++ templates compiler-errors