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

C++ object's type definition comparison, ignoring the wrong one with compiler

本文关键字:类型 编译器 错误 对象 定义 比较 C++      更新时间:2023-10-16

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

所以它会像

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

我有类似的东西

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

但只有 #else 线有效。

我对比较部分感到困惑。有没有一种正常的方式来定义它?

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

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

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

相关文章: