【发布时间】:2015-04-14 15:29:37
【问题描述】:
我需要一个 if-else 比较来询问其中的对象是否属于某种类型。我还需要编译器忽略错误的行。
所以会是这样的
#if (/* the object is an objectType */)
object.doSmth();
#else
object.doSmthElse();
#endif
我有类似的东西
strcmp(typeid(object).name(), "class objectType")==0
但只有 #else 行起作用。
我对比较部分感到困惑。有没有一种正常的方法来定义它?
【问题讨论】:
-
我觉得你需要的不是更好的继承结构,就是专门的模板函数。
-
#if是一个预处理器指令。你的意思是if? -
@molbdnilo 否,因为我需要编译器忽略未使用的行。在我的例子中,non-objectType 对象没有
doSmth()函数,所以它不会使用简单的 if 编译。 -
@MariaDmitrievich 你不能用预处理器做这样的事情,因为预处理甚至在解析之前就已经发生了。您需要在运行时对类型进行某种动态调度。
标签: c++ macros type-deduction