範例
class
MyClass;
typedef void
(MyClass::*FPointer)();
class
Data {
};
class
MyClass {
public
:
FPointer getFunction() {
return
&MyClass::privateFunction; }
Data& getDataC() {
return
c; }
protected
:
Data * getDataD();
Data c;
private
:
Data d;
void
privateFunction();
};
Data* MyClass::getDataD() {
return
&d; }
解決方案
變更 private 成員的範圍或傳回常數。
class
MyClass;
typedef void
(MyClass::*FPointer)();
class
Data {
};
class
MyClass {
public
:
Data& getDataC() {
return
c; }
Data c;
protected
:
FPointer getFunction() {
return
&MyClass::privateFunction; }
void
privateFunction();
const
Data * getConstDataD();
private
:
Data d;
};
const
Data* MyClass::getConstDataD() {
return
&d; }