[英]Pointer to member function - doesn't want to work
in this short code: 在这段短代码中:
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: 错误:
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_) (...)'
Add an extra pair of parens: 添加一对额外的括号:
(parent_->*ptr_)();
See C++FAQ lite 33.6 . 请参阅C ++ FAQ lite 33.6 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.