Ich versuche Methode Verkettungs in C++ zu implementieren, die recht einfach zu sein, stellt sich heraus, wenn der Konstruktor Aufruf einer Klasse eine gesonderte Erklärung ist, zum Beispiel:Methode Verkettungs einschließlich Klassenkonstruktors
Foo foo;
foo.bar().baz();
Aber so bald Wenn der Konstruktoraufruf Teil der Methodenkette wird, beschwert sich der Compiler über das Erwarten von ";" anstelle von "." unmittelbar nach dem Konstruktoraufruf:
Foo foo().bar().baz();
Ich frage mich jetzt, ob dies tatsächlich möglich, in C++ ist. Hier ist mein Test-Klasse:
class Foo
{
public:
Foo()
{
}
Foo& bar()
{
return *this;
}
Foo& baz()
{
return *this;
}
};
ich auch ein Beispiel für „fließend Schnittstellen“ in C++ (http://en.wikipedia.org/wiki/Fluent_interface#C.2B.2B) gefunden, die genau zu sein scheint, was ich suche. Allerdings bekomme ich den gleichen Compilerfehler für diesen Code.
Welcher Compiler ist das? –
Oh, ich habe vergessen, dies zu erwähnen: Visual Studio 2010 (Professional). – jena
Foo foo = bar(). Baz(). Bang(); –