5

我正在尝试在 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 ) 中找到了一个“流利接口”的例子,这似乎正是我正在寻找的。但是,对于该代码,我得到了相同的编译器错误。

4

2 回答 2

11

尝试

// creates a temporary object
// calls bar then baz.
Foo().bar().baz();
于 2010-05-20T19:49:40.783 回答
8

您忘记了Foo对象的实际名称。尝试:

Foo foo = Foo().bar().baz();
于 2010-05-20T20:36:45.133 回答