【发布时间】:2021-01-24 05:57:21
【问题描述】:
我有一个具有长返回类型的成员函数的类:
/* MyClass.hpp */
namespace foo
{
class MyClass
{
public:
SomeNameSpace::Lengthy_return_type_name someFunction(params...);
};
}
我想让它更具可读性,而不会让读者感到困惑,而且我不一定想将 typedef 暴露给外界。所以在 MyClass.hpp 中,我在 MyClass 中添加了以下 typedef:
/* MyClass.hpp */
namespace foo
{
class MyClass
{
private:
typedef SomeNameSpace::Lengthy_return_type_name myType;
public:
myType someFunction(params...);
};
}
现在,在 MyClass.cpp 中,我遇到了一个难题,因为 myType 不可见,无法用作返回类型。如果我公开了 typedef,我可以使用 MyClass::myType,但我不喜欢这样,因为我认为它令人困惑并且还暴露了 myType。我也可以将 typedef 添加到 MyClass.cpp 的顶部,但这可能会失去意义,因为读者必须进行一些挖掘才能找出类型所指的内容。
我是不是想多了?在这种情况下,最佳做法是什么?
【问题讨论】:
-
从技术上讲,您可以使用尾随返回类型:
auto MyClass::someFunction(...) -> myType。 -
“现在,在 MyClass.cpp 中我遇到了一个难题,因为 myType 不可见,无法用作返回类型”您为什么认为这会是个问题?公共方法的返回类型是对外可见的,typedef是否是私有的并不重要
-
@idclev463035818,奇怪的是,它实际上是compiles。 :) 那很奇怪。我猜应该有一些规则。
标签: c++ class scope typedef member-functions