在C++中的编译时检索当前类类型
Retrieve current class type during compile time in C++
是否可以创建一个C++宏,如果在类的方法中调用,该宏将接受void*
值并将其强制转换为当前类类型?
class Foo{
void bar();
void baz(){ void* pInst = some_magic_source(); SOME_MACRO(pInst)->bar(); }
};
该解决方案应适用于VC++2012+和GCC 4.8+。
(我需要将其作为更复杂宏的一部分)
指向当前类类型的指针是this
的类型,导致以下简单宏:
#define SOME_MACRO(x) (static_cast<decltype(this)>(x))
请注意,当前类类型可能是cv限定的(因此,this
指针可能指向cv限定类型,这意味着强制转换可能导致指向cv合格对象的指针)。如果需要的话,你可以很容易地使用remove_cv
这样的类型特征来处理这个问题。
相关文章:
- 如何在 C++17 中检索 std::filesystem::file_time_type 的时钟类型
- 如何从C 中的集合中检索多个继承类型
- 检索不同类型的对象指针
- 自动检索返回类型的模板功能
- 从保存变量数据类型的数据结构中检索值,而不指定返回类型
- 为什么C++模板类型匹配不检索引用限定符"&"?
- 使用友元函数从多态类中检索类型信息
- 从未知dll(c++)中检索函数(名称、返回类型、参数)
- 如何检索要在模板中使用的函数的返回类型
- 如何从概念中检索类型?
- cpp函数来检索各种数据类型的值
- 从数据库中以 blob 数据类型形式存储的原始图像数据中检索 CImage 对象
- std::用户定义类型的映射在检索值时会使程序崩溃
- 在编译时检索 Opencv Mat_的类型<T>
- ArgumentError 在 Boost.Python 中的类中存储和检索指针:错误的类型
- 根据对象的类型从矢量中检索对象
- 从 std::type_info 检索数据类型的大小
- 从 c++ 检索 Python 类型
- 按类型检索可变类的给定成员
- 根据所包含的类型检索向量的向量