Я пытаюсь реализовать объединение в цепочку метода в 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), который, кажется, точно, что я ищу. Однако я получаю ту же ошибку компилятора для того кода.
Вы забыли настоящее имя объекта Foo
. Попробуйте:
Foo foo = Foo().bar().baz();
Попробуйте
// creates a temporary object
// calls bar then baz.
Foo().bar().baz();