在下面的片段中,MyClass
有一个返回其共享指针的静态方法。为了使代码简洁,我们使用别名 MyClassPtr
对于 std::shared_ptr<MyClass>
.
然而,为了实现这一点,我们在声明共享指针别名之前声明类,然后在实际的类声明之后。看起来很冗长。
有什么方法可以重组代码,这样
- 保留
MyClassPtr
别名(在整个项目中共享) - 无需“声明”
MyClass
两次
代码如下:
class MyClass;
using MyClassPtr = std::shared_ptr<MyClass>;
class MyClass {
public:
static MyClassPtr createMyClassInstance();
private:
/*Other members & methods*/
}
我对当前的实现没意见。但如果代码可以改进,我想寻求有经验的人的建议。
最佳答案
您的问题有些含糊,因为您问的是如何简化代码,但您没有提供任何实际代码,仅提供了类定义的概要。相反,我尝试回答更明智的问题,即如何改进您的代码。我建议
避免使用别名
MyClassPtr
,它不是必需的(如果您使用auto
,则不应使用太多)但更重要的是减少冗长,从而提高可读性代码,因为从它的名称中看不出MyClassPtr
是指shared_ptr
。如果你坚持要对智能指针进行简写,你可以在类定义之后定义它,从而避免前向声明
将
MyClass::createMyClassInstance
重命名为更冗长的名称,我建议MyClass::createSharedPtr
(不需要在MyClass
函数名)。不要忘记类定义后的
;
。
因此,
class MyClass
{
public:
static std::shared_ptr<MyClass> createSharedPtr();
private:
/* Other members & methods */
};
using MyClassSharedPtr = std::shared_ptr<MyClass>; // optional
恕我直言,好的代码应该是不言自明的,因此不一定最简洁/简短,但必须避免冗余。
关于c++ - 静态方法返回类的 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085660/