上下文:我的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函数创建一个可调用对象,该对象将调用您告诉它的函数。

10-08 11:05