Нет способа объявить функции-члены класса вне объявления основного класса. Итак, если вы хотите объявить вне рассматриваемого класса функции, которые могут обращаться к переменным-членам определенного экземпляра класса, то я не вижу другой альтернативы, кроме как передать этот экземпляр функции. Кроме того, если вы хотите, чтобы функции могли обращаться к закрытым и защищенным переменным, вам нужно поместить их в новый класс и сделать исходный класс другом этого. Э.Г.
header.h:
class FooImpl;
class Foo {
public:
int bar();
friend class FooImpl;
private:
int var;
}
impl.cpp:
#include "header.h"
class FooImpl {
public:
int bar(Foo &);
}
int FooImpl::bar(Foo &foo) {
return foo.var;
}
int Foo::bar() {
return FooImpl::bar(*this);
}