【发布时间】:2012-07-30 05:24:33
【问题描述】:
我正在制作一个跨平台库,在多个平台上实现几个基本原语。为了验证基元(即类)的每个实现是否提供所有平台所需的核心成员,我使用以下构造:
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);
所以如果 Event 类没有 bool TryWait(unsigned) 方法,我们会在这里得到一个编译错误。
问题是:在 C++ 中是否有类似的语法来声明指向构造函数的指针?如果类不提供给定的构造函数,我想要一个导致编译时错误的语句参数类型。
【问题讨论】:
-
离题,但你不应该像
_Ty和_MethodVerifyHelper那样使用reserved names。
标签: c++