我有一个指向结构的指针,如果指针为null,我想获取该结构的成员或该结构的默认构造成员。有没有很好的捷径可以做到这一点?我想到实现这种atm的唯一方法是使用宏
例如:
#define safe_dereference(X, Y) (X ? X->Y : decltype(X->Y)())
此代码段是在堆栈溢出中编写的,未经测试
但是我有一个宏,我真的很讨厌在c ++中使用宏
答案 0 :(得分:3)
只需创建一个函数而不是MACRO,就像这样:
template <typename C, typename M>
M safe_dereference(const C* c, M (C::*member))
{
return c ? c->*member : M();
}
通话有点不同:
safe_dereference(somePointer, &MyClass::MyMember);