gpt4 book ai didi

c++ - 模板类中函数指针的成员给出错误 : must be a class or namespace when followed by '::'

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:24 24 4
gpt4 key购买 nike

我试图在 C++ 中声明一个模板函数指针。

template <class T>
class MyClass
{
public:
typedef const unsigned char* (T::*MyTemplatedEvent)(unsigned long &myParameter);
};

但出于某种原因,我不断收到此错误:

'T': must be a class or namespace when followed by '::'

有人能告诉我哪里做错了吗?
编译器应该知道 T 是一个类。它在 MyClass 声明上方这样说......

最佳答案

对于 T::*MyTemplatedEvent,您期望 T 是类类型,因为只有类类型可以有成员指针。这意味着如果你传递一个非类类型,比如 intchar*,你会得到指示的错误,因为没有成员,反过来也没有成员指针类型。

the compiler should know that T is a class. It says so above the MyClass declaration...

错了。 class T 与模板参数中的 typename T 相同,只是告诉编译器 Tany< 的占位符/em> 稍后作为模板参数传递的类型。它将类型限制为类类型。

关于c++ - 模板类中函数指针的成员给出错误 : must be a class or namespace when followed by '::' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com