这可能是一个微不足道的C ++语义问题,我想,但是我在Windows(VS2010)上遇到了这个问题。我有一个课程如下:
class A {
public:
some_type some_func();
private:
struct impl;
boost::scoped_ptr<impl> p_impl;
}
我想从some_func
中定义的函数中访问函数struct impl
,如下所示:
struct A::impl {
impl(..) {} //some constructor
...
some_impl_type some_impl_func() {
some_type x = some_func(); //-Need to access some_func() here like this
}
};
VS 2010上下文菜单显示错误,因此无需构建:
Error: A non-static member reference must relative to a specific object
如果无法获得公共成员职能,我会感到惊讶。关于如何解决这个问题的任何想法都值得赞赏。谢谢!
答案 0 :(得分:2)
您需要A
的实例。 A::impl
是与A
不同的结构,因此隐式this
不是正确的实例。在构造函数中传入一个:
struct A::impl {
impl(A& parent) : parent_(parent) {} //some constructor
...
some_impl_type some_impl_func() {
some_type x = parent_.some_func(); //-Need to access some_func() here like this
}
A& parent_;
};