我正在一個跨平臺的庫上實現幾個平臺上的幾個基本原語。要驗證原語(即類)的每一個執行提供了我使用下面的結構所有平臺所需的核心成員:C++構造函數指針的語法
template<typename _Ty> int _MethodVerifyHelper(_Ty);
#define ENSURE_MEMBER_DECL(className, methodName, returnType, ...) typedef char __PROTOTYPE_VERIFIER__[sizeof(_MethodVerifyHelper<returnType (className::*)(__VA_ARGS__)>(&className::methodName))]
然後,我寫的東西是這樣的:
ENSURE_MEMBER_DECL(Event, TryWait, bool, unsigned);
因此,如果事件類沒有bool TryWait(unsigned)
方法,我們會在這裏得到一個編譯錯誤。
現在的問題是:在C++中是否有類似的語法來聲明指向構造函數的指針?我想要一個聲明,如果一個類沒有提供給定參數類型的構造函數,會導致編譯時錯誤。
[查看在編譯時類的構造函數簽名(http://stackoverflow.com/questions/949432/check-at-compile-time-class-constructor-signature) – 2012-08-01 10:22:11
題外話的可能重複,但你不應該't使用[保留名稱](http://stackoverflow.com/questions/228783)像'_Ty'和'_MethodVerifyHelper'。 – 2012-08-01 10:58:59