#include <iostream>
#include <functional>

class Building {
	// C++ classes are private by default
	int timer_;
	std::function<void(Building*)> update_;

public:
	void update() {
		update_(this);
	}

    static Building getBuildingA() {
    	Building b;
    	b.timer_ = 42;
    	b.update_ = [](Building* b) {
    		b->timer_++;
    		std::cout << b->timer_ << '\n';
    	};
    }
};

int main() {
    Building b = Building::getBuildingA();
    b.update();
	return 0;
}