即,我有两种专门的类型:继承专门的模板化基类并调用正确的方法
template <class Type, class Base> struct Instruction {};
编译时从列表中选择适当的类型。
喜欢:
template <class Base> struct Instruction<Int2Type<Add_Type>, Base >
{
void add() {}
};
template <class Base> struct Instruction<Int2Type<Mul_Type>, Base > :
Instruction<Int2Type<Add_Type>, Base >
{
void mul()
{
add(); ???? <== not working (not resolved)
}
};
什么是这个解决方案?
谢谢
马丁
我不认为这适用于此。请注意,您引用的FAQ条目是指在基础中定义的嵌套类,而不是成员函数。成员函数有一个隐含的“this->”,这会使它们默认依赖。 – 2010-08-26 15:00:31
@James Curran:我将链接更改为下一个FAQ条目,这更合适。问题是编译器不知道'add()'指向一个成员函数。这可能是一项免费功能。由于'add'不是依赖名称,因此不会在模板化的基类中搜索,因此找不到。 – sth 2010-08-26 15:07:36
一个常见的错误:不查看基类的原因不是依赖状态。这是应用于它的名称和名称查找的形式。不合格的名称在非合格的查找期间不在相关的基类中查找。即使他们依赖。这很容易发生 - 以'运算符T()'为例,这是一个不合格的从属名称,仍然没有在依赖的基础上查找。请注意,常见问题解答有误 - 我向作者发送了关于它的信息,他同意他需要对其进行修改。 – 2010-08-26 21:35:01