作爲一個類的私有成員,我可以有一個函數指針數組嗎?類似的,函數指針作爲類成員的數組
class MyClass {
public: //public stuff
private:
void (*specficFunctions[16]) (void);
}
我特別不想使用函數或函數。
作爲一個類的私有成員,我可以有一個函數指針數組嗎?類似的,函數指針作爲類成員的數組
class MyClass {
public: //public stuff
private:
void (*specficFunctions[16]) (void);
}
我特別不想使用函數或函數。
是的,儘管你通常要使用typedef,以保持語法有點更易於管理:
class MyClass {
typedef void (*fptr)(void);
fptr SpecificFunctions[16];
};
但是請注意,這些是指向全球功能,不成員函數。
Typedefs很好,我會用它們。我正在努力的事情由於幾個原因而受到脆弱的影響。我試圖將這種脆弱性分離成一個單元,同時保持它的功能。然後,我要解決這些問題。 – David 2010-07-22 18:18:51
函數指針沒有什麼特別之處。聲明語法可能會令人困惑(可以通過typedefs來緩解),但它們與其他指針並沒有太大區別。如果你可以創建一個指針數組,你可以創建一個函數指針數組。與任何其他類型的變量相比,類的私有成員也沒有什麼特殊之處。如果你可以創建一個數組,你可以將一個數組作爲一個類的私有成員。
是的。 (你總是可以通過編譯這樣的代碼來回答這種問題。)
編譯並不是測試一般情況下是否允許進行的測試。你可能會遇到一個奇怪的編譯器擴展,或者它與標準的最後幾個不兼容之一。 – 2010-07-22 18:14:05
@大衛,好點。 – 2010-07-22 18:26:26
你真的試過了嗎?如果是的話,你的錯誤是什麼? [因爲作爲一個類的私有成員擁有一個函數指針數組是完全合法的] – 2010-07-22 18:14:24
我想你知道_member_函數指針與指向_non-member_函數的指針不同嗎? (並且,如果你需要一個成員函數指針數組,重新考慮你的設計,虛擬函數是這樣實現的,不需要重新實現它們。) – sbi 2010-07-22 18:23:12
我還沒有。我仍然在粗暴。對我來說,這是一種事情,如果我搞砸了,那很難解決。 – David 2010-07-22 18:23:54