How to correctly return std::type_info from class method in C++
我有一个类模板,它应该能够通过
1 2 3 4 5 6 7 8 9 10 11 12 | 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&;)":试图引用已删除的函数
你知道我这里缺少什么吗?
这个问题与模板无关,这是因为
您应该通过
1 | const std::type_info& GetBeliefType() const override |
如果你看一下这份文件,你会发现
The
type_info class is neither CopyConstructible nor ...
号
因此,您不能退回副本。错误消息告诉您同样的事情,因为
解决方案:您可以返回引用。这是因为
The typeid expression is lvalue expression which refers to an object with static storage duration, of the polymorphic type const std::type_info or of some type derived from it.
号