I'm trying to implement method chaining in C++, which turns out to be quite easy if the constructor call of a class is a separate statement, e.g:
Foo foo;
foo.bar().baz();
But as soon as the constructor call becomes part of the method chain, the compiler complains about expecting ";" in place of "." immediately after the constructor call:
Foo foo().bar().baz();
I'm wondering now if this is actually possible in C++. Here is my test class:
class Foo
{
public:
Foo()
{
}
Foo& bar()
{
return *this;
}
Foo& baz()
{
return *this;
}
};
I also found an example for "fluent interfaces" in C++ (http://en.wikipedia.org/wiki/Fluent_interface#C.2B.2B) which seems to be exactly what I'm searching for. However, I get the same compiler error for that code.
Constructor chaining can be done in two ways: Within same class: It can be done using this() keyword for constructors in the same class. From base class: by using super() keyword to call the constructor from the base class.
Answer: Constructor chaining is the process of calling one constructor from another constructor with respect to current object. Constructor chaining can be done in two ways: Within same class: It can be done using this() keyword for constructors in same class.
No, you cannot call a constructor from a method.
Need for Constructor Chaining in Java Constructor Chaining in Java is used when we want to pass parameters through multiple different constructors using a single object. Using constructor chaining, we can perform multiple tasks through a single constructor instead of writing each task in a single constructor.
Try
// creates a temporary object
// calls bar then baz.
Foo().bar().baz();
You have forgotten the actual name for the Foo
object. Try:
Foo foo = Foo().bar().baz();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With