Solution 1 for Animal (http://ideone.com/N3RXXx)
#include <iostream>
class Animal
{
    public:
        int x;
        int y;
        int z;
        Animal & setx(int v) { x = v; return *this;}
        Animal & sety(int v) { y = v; return *this;}
        Animal & setz(int v) { z = v; return *this;}
};
int main() {
    Animal anml;
    anml.setx(5).sety(6).setz(7);
    std::cout << anml.x << ", " << anml.y << ", " << anml.z << std::endl;
    return 0;
}
Solution 2 for any class with x, y (https://ideone.com/xIYqZY)
#include <iostream>
class Animal
{
    public:
        int x;
        int y;
        int z;
};
template<class T, class R> T& setx(T & obj, R x) {  obj.x = x;  return obj;}
template<class T, class R> T& sety(T & obj, R y) {  obj.y = y;  return obj;}
int main() {
    Animal anml;
    sety(setx(anml, 5), 6);
    std::cout << anml.x << ", " << anml.y << std::endl;
    return 0;
}