上下文:我的C ++经验约为3/10,所以请多多包涵。
我很好奇是否可以将读取回调函数附加到C ++对象成员,以便在分配时:
var = object.member;
这将调用一个回调,该回调在返回成员之前对其进行更新。我可以通过达到相同的目的
...
var = object.GetMemberVal();
...
int FooClass::GetMemberVal()
{
// update member value
return this->member;
}
但是val = object.member; (没有括号)会更干净一些,并且看起来更接近面向对象的精神……我认为。
我认为member function as callback可能是相关的,但我并不完全关注。
这是否是一个好主意,尚待辩论,我只是想知道是否有可能。
最佳答案
如果我理解您的正确,则可能需要使用std::bind
:
auto myGetMemberVal = std::bind(&FooClass::GetMemberVal, object);
// ...
int value = myGetMemberVal(); // Actually calls object.GetMemberVal()
std::bind
函数创建一个可调用对象,该对象将调用您告诉它的函数。