模板函数调用中C++错误:不允许使用类型名称
C++ error in template function call: type name is not allowed
Diab编译器在@@@行中抱怨不允许使用类型名称。
template<
Task TASK,
Event EVENT>
class TManager :
public AbstractTManager,
public common::ITManager
{
public:
typedef os::EManager<TASK> tEManager;
TManager()
{ /* ... */}
virtual void init()
{
tEManager::registerCallback<
EVENT,
TManager, /* @@@ */
&TManager::func>(*this);
}
void func()
{ /* ... */}
}
在EManager中,注册回调是按以下方式定义的:
template<TType task>
class EManager
{
public:
template<
EType event,
typename e_listener,
void (e_listener::*TMethod)()
>
static void registerCallback(e_listener& listener)
{
/* ... */
}
}
第二个模板参数与关键字类型名称e_listener,所以我不知道为什么它会报告问题。我错过了什么吗? 提前感谢您的帮助。
您应该添加template
:
tEManager::template registerCallback<
EVENT,
TManager,
&TManager::func>(*this);
谢谢Jarod42和克里斯。它有效!我错过了这个非常有价值的主题,其中包括"模板关键字"一章中的解决方案: 我必须在哪里以及为什么必须放置"模板"和"类型名称"关键字?
相关文章:
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- E0322:不允许使用抽象类类型 " " 的对象
- 为什么C++不允许两个同名的函数/类模板,区别仅在于非类型模板参数(整型)的类型?
- 不允许将SDL_Cursor与unique_ptr:error不完整类型一起使用
- HTTP POST 请求不允许我定义上下文类型
- 内建数组出现不允许的类型不完整错误
- 为什么 std::array 的演绎指南不允许不同的类型?
- 为什么标准不允许通过引用捕获不完整的异常类型?
- 数组错误(不允许类型不完整)
- 为什么函数返回类型中不允许参数推导?
- std::function 中不允许引用返回类型吗?
- 类中不允许使用不完整的类型,但在类模板中允许使用不完整的类型
- 为什么协程不允许使用占位符返回类型?
- 错误消息:不允许抽象类类型 "X" 的对象:纯虚拟"Y"没有覆盖器
- 错误:不允许使用抽象类类型的对象
- 奇怪的不完整类型不允许错误
- 不完整的类型不允许错误
- c++不完全类型不允许在类内部使用
- 不完全类型不允许出现错误和元组