I have a simple class as follows:
class Thing : public Value::Listener { public: Thing(); void process(); void valueChanged(Value &value) override; private: Value x; Value y; Value z; JUCE_LEAK_DETECTOR(Thing) }; using namespace std; Thing::Thing() { x = 100.0; y = 200.0; z = 100.0; x.addListener(this); y.addListener(this); z.addListener(this); } void Thing::valueChanged(Value &value) { if (value.refersToSameSourceAs(x)) { cout << "value x changed" << endl; } else if (value.refersToSameSourceAs(y)) { cout << "value y changed" << endl; } else if (value.refersToSameSourceAs(z)) { cout << "value z changed" << endl; } } void Thing::process() { x = 99.0; y = 101.0; z = -1000.0; }
The problem I'm seeing is when I do the following:
Thing thing; thing.process();
I don't see the valueChanged function being called. My other issue is how I distinguish between different Values in valueChanged? Is refersToSameSourceAs the right way?