我有以下情况的嵌套类:

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一起使用。

最佳答案

类范围查找适用于声明符ID(这是要定义的函数的名称,即PS_OcTree::subdiv_criteria::elementInfo)之后的所有内容,包括尾随返回类型。因此,

auto PS_OcTree::subdiv_criteria::elementInfo(
  unsigned int const& poly_index, node const* n) -> Element
{
}

关于c++ - 我可以以某种方式不写出完整的合格返回类型名称吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38317921/

10-11 15:54