Can you chain methods by returning a pointer to their object?

c++, class-design

Solution

For that specific syntax you'd have to return a reference

class Foo {
public:

  Foo& SetX(int x) {
    /* whatever */
    return *this;
  } 

  Foo& SetY(int y) {
    /* whatever */
    return *this;
  } 
};

P.S. Or you can return a copy (`Foo` instead of `Foo&`). There's no way to say what you need without more details, but judging by the function name (`Set...`) you used in your example you probably need a reference return type.

Problem

My goal is to allow chaining of methods such as: ``` class Foo; Foo f; f.setX(12).setY(90); ``` Is it possible for `Foo`'s methods to return a pointer to their instance, allowing such chaining?

Original source