我有一个类模板,它应该能够通过std::type_info
返回其模板类型:
template <class factType>
class Belief : public BeliefRoot
{
/* ... */
factType m_Fact;
std::type_info GetBeliefType() const override
{
return typeid(m_Fact);
}
};
但是编译该类代码时,我遇到了以下错误:
错误 C2280: 'type_info::type_info(const type_info &)': 尝试引用已删除的函数
你们有什么想法吗?我是漏掉了什么吗?
typeid()
构造了一个新对象,它将是正确的,但实际上并没有这样做。它返回的对象引用在程序的生命周期内保持不变。 - IanPudneyconst
引用,像这样:const std::type_info& GetBeliefType() const override
。 - Matthiasconst
关键字。 - IanPudney