Visual Studio 2010 — Доступ к открытой функции-члену класса C ++ из частного члена структуры данных

Это может быть тривиальный вопрос семантики 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

Решение

Вам нужен экземпляр 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_;
};
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]