Estoy tratando de poner en práctica el método de encadenamiento en C++, el cual resulta ser muy fácil si la llamada al constructor de una clase es una declaración por separado, por ejemplo:método de encadenamiento incluyendo constructor de la clase
Foo foo;
foo.bar().baz();
Pero tan pronto como la llamada al constructor se convierte en parte de la cadena de métodos, el compilador se queja de que espera ";" en lugar de "." inmediatamente después de la llamada del constructor:
Foo foo().bar().baz();
Me pregunto ahora si esto es realmente posible en C++. Aquí está mi clase de prueba:
class Foo
{
public:
Foo()
{
}
Foo& bar()
{
return *this;
}
Foo& baz()
{
return *this;
}
};
También encontré un ejemplo de "interfaces fluidas" en C++ (http://en.wikipedia.org/wiki/Fluent_interface#C.2B.2B) que parece ser exactamente lo que estoy buscando. Sin embargo, obtengo el mismo error de compilación para ese código.
¿Qué compilador es este? –
Ah, olvidé mencionar esto: Visual Studio 2010 (Professional). – jena
Foo foo = bar(). Baz(). Bang(); –