我正在一个跨平台的库上实现几个平台上的几个基本原语。要验证原语(即类)的每一个执行提供了我使用下面的结构所有平台所需的核心成员: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