объединение в цепочку метода включая конструктора класса

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

5
задан dandan78 7 January 2016 в 14:04
поделиться

2 ответа

Вы забыли настоящее имя объекта Foo . Попробуйте:

Foo foo = Foo().bar().baz();
8
ответ дан 18 December 2019 в 08:27
поделиться

Попробуйте

// creates a temporary object
// calls bar then baz.
Foo().bar().baz();
11
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: