Я пытаюсь реализовать цепочку методов в 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), который, кажется, именно то, что я ищу. Однако я получаю ту же ошибку компилятора для этого кода.