Cri*_*ano 4 c++ design-patterns fluent-interface unique-ptr c++11
我正在使用流畅的界面模式.
首先,我写了类似的东西:
class C
{
public:
C() { }
C* inParam1(int arg1){ param1 = arg1; return this; }
C* inParam2(int arg2){ param2 = arg2; return this; }
private:
int param1;
int param2;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用std :: unique_ptr,但后来我意识到我不知道如何沿着链"移动"指针(this).我尝试过类似的东西:
return std::move(this);
Run Code Online (Sandbox Code Playgroud)
那当然不行.
我怎样才能做到这一点?做这样的事有什么问题吗?
为了回复如下评论:"不要使用指针":没有(还)任何实际原因,因为我用指针做这个,只是我想知道是否可以这样做.
Ben*_*ley 10
为什么你必须返回指针?
class C
{
public:
C create() { return C(); }
C & inParam1(int arg1){ param1 = arg1; return *this; }
C & inParam2(int arg2){ param2 = arg2; return *this; }
private:
C() { }
int param1;
int param2;
};
Run Code Online (Sandbox Code Playgroud)
我必须承认,我不理解该创建函数的目的,或者为什么构造函数是私有的,或者你实际上是如何创建这个类的对象.根据我的理解,该课程应该是这样的:
class C
{
public:
C() {}
C & inParam1(int arg1){ param1 = arg1; return *this; }
C & inParam2(int arg2){ param2 = arg2; return *this; }
private:
int param1;
int param2;
};
Run Code Online (Sandbox Code Playgroud)
像这样使用:
int main()
{
C().inParam1(10).inParam2(20).whatever();
}
Run Code Online (Sandbox Code Playgroud)