Это может быть тривиальный вопрос семантики 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
Я был бы удивлен, если бы не было никакого способа получить доступ к функции публичного члена. Любые идеи о том, как обойти это, приветствуются. Спасибо!
Вам нужен экземпляр 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_;
};
Других решений пока нет …