Tob*_*obi 7 c++ dependency-injection unique-ptr getter-setter visual-studio-2012
我有一个类MyClass
拥有某个类的实例,DataProvider
并为此有一个getter.
为了依赖注入,我宁愿有一个getter和一个setter.此外,DataProvider
应包含在std::unique_pointer
:
#include <memory>
#include <iostream>
class DataProvider
{
public:
DataProvider() {}
virtual ~DataProvider() {}
/* stuff */
private:
/* more stuff */
};
class MyClass
{
public:
MyClass() {}
virtual inline const DataProvider &getDataProvider() const
{
return *data;
}
void setDataProvider(std::unique_ptr<DataProvider> newData)
{
data = std::move(newData);
}
private:
std::unique_ptr<DataProvider> data;
};
Run Code Online (Sandbox Code Playgroud)
我读过这个:如何将unique_ptr参数传递给构造函数或函数?
但它不包括吸气剂部分.这(上面)是正确的方法吗?还有什么可以想到的?
如你所写
virtual inline const DataProvider &getDataProvider() const
{
return *data;
}
void setDataProvider(std::unique_ptr<DataProvider> newData)
{
data = std::move(newData);
}
Run Code Online (Sandbox Code Playgroud)
完全可以。在设置器中,该类获得了DataProvider实例的所有权,并且永不松手(就此处所示)。
sftrabbit在此处给出了一个完整的示例:http ://ideone.com/enarAS