aliyun / aliyun-oss-cpp-sdk

Aliyun OSS SDK for C++
Other
188 stars 88 forks source link

OssClient 不符合三/五法则 #11

Closed yanminhui closed 5 years ago

yanminhui commented 5 years ago

OssClient 是一个指向实现 OssClientImpl 的类,其实现通过委托构造函数,最终在一个构造函数内 new OssClientImpl(...),在析构函数中 delete client_。这并 没有阻止用户对 OssClient 的对象进行拷贝,如果用户这么做是危险的。

比如现在我就遇到了该问题,我想拆分 OssClient 函数集,让用户面向资源的方式去操作,所以让 OssClient 做为配置选项传递资源管理器就撞上了。

class COssClient final
{
private:
   AlibabaCloud::OSS::OssClient proxy_;
};

class COssObject
{
  explicit COssObject(COssClient const& oss_client) : oss_client_(oss_client) {}
private:
  COssClient oss_client_;
};

class COssUpload : public COssObject
{
};
huiguangjun commented 5 years ago

谢谢您的反馈。 您可以先在本地把 client_ 定义为shared_ptr类型, 同时把相关的地方也一起修改。

huiguangjun commented 5 years ago

1.4.0 版本已经修改。