我想知道在我的情况下使用什么更好以及为什么。首先我听说使用 RTTI (typeid) 很糟糕。任何人都可以解释为什么?如果我确切地知道类型在运行时比较它们有什么问题?此外,是否有任何示例如何使用 boost::type_of?我没有通过强大的谷歌搜索:) 对我来说其他解决方案是专业化,但我需要专门化至少 9 种新方法。这是我需要的一个例子:
我有这门课
template<typename A, typename B, typename C>
class CFoo
{
void foo()
{
// Some chunk of code depends on old A type
}
}
所以我需要检查 typeid(我听到的是 BAD)并在示例中进行这 3 个实现,例如:
void foo()
{
if (typeid(A) == typeid(CSomeClass)
// Do this chunk of code related to A type
else
if (typeid(B) == typeid(CSomeClass)
// Do this chunk of code related to B type
else
if (typeid(C) == typeid(CSomeClass)
// Do this chunk of code related to C type
}
那么最好的解决方案是什么?我不想专门针对所有 A、B、C,因为每种类型都有 3 个专门化,所以我会得到 9 种方法或者只是这个 typeid 检查。