我有以下嵌套类的情况:
class PS_OcTree {
public:
// stuff ...
private:
struct subdiv_criteria : public octree_type::subdiv_criteria {
PS_OcTree* tree;
subdiv_criteria(PS_OcTree* _tree) : tree(_tree) { }
virtual Element elementInfo(unsigned int const& elem, node const* n) override;
};
};
要在.cpp
文件中实现此方法,我写
PS_OcTree::subdiv_criteria::Element
PS_OcTree::subdiv_criteria::elementInfo(
unsigned int const& poly_index, node const* n)
{
// implementation goes here
}
我写这个方法的全名很好,但是我真的还需要写一个返回类型的全名吗?在参数括号和函数体内,我可以访问subdiv_criteria
类的名称,但这似乎不适用于返回类型。
我希望写一些像
这样的东西Element PS_OcTree::subdiv_criteria::elementInfo(
unsigned int const& poly_index, node const* n)
{
// implementation goes here
}
// or
auto PS_OcTree::subdiv_criteria::elementInfo(
unsigned int const& poly_index, node const* n)
{
// implementation goes here
}
至少有些事情并不要求我在返回类型中重复PS_OcTree::subdiv_criteria
。我可以使用C ++ 11中的某些东西吗?它也应该与MSVC 2015和Clang 5一起使用。
答案 0 :(得分:7)
类范围查找适用于 declarator-id 之后的任何内容(它是要定义的函数的名称,即PS_OcTree::subdiv_criteria::elementInfo
),包括尾随返回类型。因此,
auto PS_OcTree::subdiv_criteria::elementInfo(
unsigned int const& poly_index, node const* n) -> Element
{
}