C ++对象的类型定义比较,忽略了编译器的错误

时间:2015-04-14 15:29:38

标签: c++ macros type-deduction

我需要一个if-else比较,它会询问其中的对象是否属于某种类型。我还需要编译器忽略错误的行。

所以它会像

#if (/* the object is an objectType */)
    object.doSmth();
#else
    object.doSmthElse();
#endif

我有类似

的东西
strcmp(typeid(object).name(), "class objectType")==0

但只有#else行才有效。

我对比较部分感到困惑。是否有正常的方法来定义它?

1 个答案:

答案 0 :(得分:0)

您可以使用函数模板和重载来区分类型:

void doSmth(objectType & object) {object.doSmth();}
template <class Type> void doSmth(Type & object) {object.doSmthElse();}

现在doSmth(object)将选择第一个object是否具有类型objectType,否则将选择第二个,如您的伪代码所指定。