我正在尝试在C ++中实现方法链接,如果类的构造函数调用是一个单独的语句,结果很容易,例如:
Foo foo;
foo.bar().baz();
但是一旦构造函数调用成为方法链的一部分,编译器就会抱怨期望“;”代替“。”在构造函数调用之后立即执行:
Foo foo().bar().baz();
我现在想知道这在C ++中是否真的可行。这是我的测试类:
class Foo
{
public:
Foo()
{
}
Foo& bar()
{
return *this;
}
Foo& baz()
{
return *this;
}
};
我还在C ++(http://en.wikipedia.org/wiki/Fluent_interface#C.2B.2B)中找到了一个“流畅的接口”的例子,这似乎正是我正在寻找的。但是,我得到了该代码的相同编译器错误。
答案 0 :(得分:11)
尝试
// creates a temporary object
// calls bar then baz.
Foo().bar().baz();
答案 1 :(得分:8)
您忘记了Foo
对象的实际名称。尝试:
Foo foo = Foo().bar().baz();