gpt4 book ai didi

c++ - C++ 中构造函数指针的语法

转载 作者:太空狗 更新时间:2023-10-29 19:44:14 25 4
gpt4 key购买 nike

我正在制作一个跨平台库,在多个平台上实现多个基本原语。为了验证原语(即类)的每个实现都提供了所有平台所需的核心成员,我使用了以下结构:

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++ 中是否有类似的语法来声明指向构造函数的指针?如果一个类没有提供给定的构造函数,我想要一个导致编译时错误的语句参数类型。

最佳答案

你无法获取构造函数的地址,但你可以如果一个对象不能用给定的参数集:

typedef int dummyToTriggerError[ sizeof( T( arg1, arg2, arg3 ) ) ];

当然,最重要的部分是 sizeof 表达式,它包含永远不会被评估的对象的构造,但是这必须是合法的。它被包裹在 typedef 中以确保它永远不会生成任何代码。

关于c++ - C++ 中构造函数指针的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com