範例

class MyClass {
public:
int publicVar;
int publicFnc(){//必須是成員
privateFnc();
return privateVar;
}

int memberFnc();//不必是成員

protected:
int privateVar;
private:
int privateFnc(){ return privateVar; }

};

int MyClass::memberFnc(){
publicFnc();
return publicVar;
}

解決方案
使函數成為接受類別作為參數的非成員,以及執行相同的函數。

class MyClass {
public:
int publicVar;
int publicFnc(){//必須是成員
privateFnc();
return privateVar;
}

protected:
int privateVar;
private:
int privateFnc(){ return privateVar; }

};

int nonMemberFunction(const MyClass& mc){
mc.publicFnc();
return mc.publicVar;
}