示例
class
MyClass {
public
:
int
publicVar;
int
publicFnc(){
//needs to be member
privateFnc();
return
privateVar;
}
int
member
Fnc
();
//does not need to be member
protected
:
int
privateVar;
private
:
i
nt
privateFnc(){
return
privateVar; }
};
int
MyClass::memberFnc(){
publicFnc();
return
publicVar;
}
解决方案
类作为非成员函数的参数,使非成员函数能够实现与类成员函数相同的功能。
class
MyClass {
public
:
int
publicVar;
int
publicFnc(){
//needs to be member
privateFnc();
return
privateVar;
}
protected
:
int
privateVar;
private
:
i
nt
privateFnc(){
return
privateVar; }
};
int
nonMemberFunction(
const
MyClass& mc){
mc.publicFnc();
return
mc.publicVar;
}