我是指向成员函数的新手,我想知道它们的优缺点。
具体来说,考虑一下:
#include <iostream>
#include <list>
using namespace std;
class VariableContainer;
class Variable
{
public:
Variable (int v) : value (v), cb_pointer (0) {}
~Variable () {}
void SetCallback (void (VariableContainer::*cb)(int)) {
cb_pointer = cb;
}
void FireCallback (void) {
/* I need a reference to a VariableContainer object! */
}
private:
int value;
void (VariableContainer::*cb_pointer) (int);
};
class VariableContainer
{
public:
VariableContainer () {}
~VariableContainer () {}
void AddVar (Variable &v) {
v.SetCallback (&VariableContainer::Callback);
}
void Callback (int v) { cout << v << endl; }
};
int main ()
{
Variable v (1);
VariableContainer vc;
vc.AddVar (v);
v.FireCallback();
return 0;
}
如评论中所述,要触发回调 ( FireCallback
),我需要对现有VariableContainer
对象的一些引用,该对象应作为VariableContainer::AddVar (...)
. 现在:
- 我应该使用指向成员函数的指针吗?或者我应该直接调用
Callback (...)
(因为我有一个指向VariableContainer
对象的指针)? - 每种解决方案的优缺点是什么?
蒂亚,吉尔