【发布时间】:2017-07-15 16:17:54
【问题描述】:
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 中的 registerCallback 定义如下:
template<TType task>
class EManager
{
public:
template<
EType event,
typename e_listener,
void (e_listener::*TMethod)()
>
static void registerCallback(e_listener& listener)
{
/* ... */
}
}
第二个模板参数是带有关键字 typename 的 e_listener,所以我不知道为什么它会报告问题。我错过了什么? 提前感谢您的帮助。
【问题讨论】:
-
可能相关:stackoverflow.com/questions/610245/…。如果编译器将
tEManager视为一个值,<小于,EVENT作为另一个操作数,TManager然后是逗号运算符的第二个操作数,则该错误将适合。