openframeworks / openFrameworks

openFrameworks is a community-developed cross platform toolkit for creative coding in C++.
http://openframeworks.cc
Other
9.94k stars 2.55k forks source link

ofParameterGroup::add(std::shared_ptr<ofAbstractParameter> param); #8127

Open artificiel opened 1 week ago

artificiel commented 1 week ago

ofParameterGroup::add() takes a reference to add a parameter, but internally manages a container of shared_ptr.

As discussed here https://forum.openframeworks.cc/t/ofparametergroup-add-with-a-local-ofparameter/43666 sometimes one already has hold of a shared_ptr pointing to a param, and would want to pass it to a group. or someone want to create a parameter and have the group being the sole container for it.

This implements ofParameterGroup::add(std::shared_ptr param) (which, incidentally, is everything but the first line of the original ofParameterGroup::add(ofAbstractParameter & param)

So it is now possible to do:

group.add(std::make_shared<ofParameter<float>>("f",2));

and the group holds onto the shared_ptr. of course this is a pretty specific application (where you will have to go through the group to get to the parameter).