c++ - 特定的 C++ 宏

标签 c++ templates macros

我想要一个 C++ 宏,它将变成如下所示的东西:

safe_cast<Type>(object)

进入

Assert(dynamic_cast<Type>(object))

这可能吗?

我可以使用:safe_cast(Type, object),但这不是我想要的。

最佳答案

这不能是宏,但函数模板肯定没问题:

template <class U, class T>
U safe_cast(T *const obj) {
    auto * const p = dynamic_cast<U>(obj);
    assert(p);
    return p;
}

像使用指针dynamic_cast 一样调用。

关于c++ - 特定的 C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42955275/

相关文章:

c++ - 在类外重载运算符

c++ - 如何有效地使用 C++11 随机生成器?

C++ 指向方法模板的推导在面向 x86 时无法编译,但适用于 x64

c++ - 模板有问题。错误 : Cannot deduce template argument for type 'T'

C++,通过模板参数选择函数

macros - 是否可以使用 Rust 的宏/语法扩展来执行静态原语的计算?

c++ - NULL 指针的取消引用是否也等于 NULL?

c++ - 使用可变参数模板在 C++ 中包装函数指针

c - 使用宏初始化结构

c++ - 不支持 VARIADIC 的宏自动注入(inject)参数