我有下一个类并尝试声明成员函数,该函数将返回指向该类型但下一个代码
的指针template<class Key, int b> class b_plus_tree_inner_node {
auto split() -> decltype(this) {}
};
给了我这样的错误
在顶层无效使用'this'
我可以用另一种方式来做,我现在关于typedef的存在,但是它可能是decltype吗?
编辑:
我想完成这个:
b_plus_tree_inner_node<Key, b>* split() {...}
答案 0 :(得分:5)
如果你想要一个成员函数在类中声明它:
template<class Key, int b> class b_plus_tree_inner_node {
b_plus_tree_inner_node* split(){}
// also valid:
//b_plus_tree_inner_node<Key, b>* split(){}
};
如果您想要非会员功能,请将其设为模板:
template<class Key, int b>
b_plus_tree_inner_node<Key, b>* split(){}
该标准允许您编写auto split() -> decltype(this) {}
但GCC 4.6尚不支持它(GCC 4.7的主干)。
答案 1 :(得分:0)
你可能想要这个:
template<class Key, int b>
class b_plus_tree_inner_node
{
b_plus_tree_inner_node<Key, b> split()
{
return /*...*/;
}
};