[英]Pointer to member function - doesn't want to work
在這段短代碼中:
class X
{
private:
class Y
{
public:
typedef void (X::* ptr_to_mem)();
Y(X* parent,ptr_to_mem ptr):parent_(parent),ptr_(ptr)
{}
void run()
{
parent_->*ptr_();//at this line I'm getting an error
}
private:
X* parent_;
ptr_to_mem ptr_;
};
public:
void some_fnc()
{
cout << "some_fnc";
}
void another()
{
Y y_(this,&X::some_fnc);
y_.run();
}
};
錯誤:
error: must use '.*' or '->*' to call pointer-to-member function in '((X::Y*)this)->X::Y::ptr_ (...)', e.g. '(... ->* ((X::Y*)this)->X::Y::ptr_) (...)'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.