저는 멤버 함수에 대한 포인터를 처음 접했고, 장단점을 알고 싶습니다.멤버 함수에 대한 포인터의 사용과 유용성에 대해
는 특히이 사항을 고려하십시오
주석에 명시된 바와 같이#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::AddVar (...)
의 추가 인수로 제공해야한다 기존 VariableContainer
객체, 일부 참조가 필요 트리거 할 수 있습니다. Now :
- 멤버 함수에 대한 포인터를 사용해야합니까? 또는
VariableContainer
개체에 대한 포인터가 있으므로Callback (...)
을 직접 호출해야합니까? - 각 솔루션의 장점과 단점은 무엇입니까?
TIA, JIR은
유용 할 수 있습니다. http://stackoverflow.com/q/3957348/15161 – slashmais