c++ - How should I access a function of a container class in a contained class object -
i have following class structure
class containingclass { int func1(int a); containedclass containedclassobject; }
i want access func1
in containedclass
objects. best way achieve that?
a naive solution comes mind pass function pointer containedclass
's constructor, circular definition, need pass pointer object of containingclass
well.
any suggestions?
the containedclass
required contract/api/function fulfilled int func1(int)
member of containingclass
. unless containedclass
explicitly requires access instance of containingclass
other purposes, access can provided via lambda (or std::bind
) , containedclass
can have std::function
correct signature member holds lambda.
the "trick" here ensure lifetime of objects managed appropriately, i.e. lifetime of containingclass
instance @ least long required use in containedclassobject
object.
a sample;
#include <functional> class containedclass { std::function<int(int)> functor_; public: void setter(std::function<int(int)> functor) { functor_ = functor; } }; class containingclass { int func1(int a); containedclass containedclassobject; public: containingclass() { containedclassobject.setter([this](int a) -> int { return this->func1(a); }); } };
Comments
Post a Comment