首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >auto (.)->decltype(这个)有什么解决办法吗?

auto (.)->decltype(这个)有什么解决办法吗?
EN

Stack Overflow用户
提问于 2012-01-17 09:18:22
回答 2查看 970关注 0票数 3

我有下一个类,并尝试声明成员函数,它将返回指向该类型的指针,但返回下一个代码。

代码语言:javascript
复制
template<class Key, int b> class b_plus_tree_inner_node {
  auto split() -> decltype(this) {}
};

给了我这样的错误

在顶层使用“this”无效

我可以用另一种方式来做吗,我现在是关于类型胡枝子的存在,但是它可能有解密的可能吗?

编辑:

我想要做到这一点:

代码语言:javascript
复制
b_plus_tree_inner_node<Key, b>* split() {...}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-17 09:27:51

如果您想要一个成员函数,在类中声明它:

代码语言:javascript
复制
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(){}
};

如果您想要一个非会员函数,请让它成为一个模板:

代码语言:javascript
复制
template<class Key, int b>
b_plus_tree_inner_node<Key, b>* split(){}

这个标准确实允许你编写auto split() -> decltype(this) {},但是GCC 4.6还不支持它( GCC 4.7的主干)。

票数 5
EN

Stack Overflow用户

发布于 2012-01-17 09:28:28

你可能想要这个:

代码语言:javascript
复制
template<class Key, int b> 
class b_plus_tree_inner_node 
{        
     b_plus_tree_inner_node<Key, b> split() 
     { 
          return /*...*/;
     }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8892083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档