c++中对象类内的对象映射
Posted
技术标签:
【中文标题】c++中对象类内的对象映射【英文标题】:map of objects inside the class of the objects in c++ 【发布时间】:2020-11-24 20:29:22 【问题描述】:如何在不引发错误的情况下创建这样的东西?
class Vertex
public:
map<Vertex, int> connectedTo;
;
如果我使用 Vertex*,它会起作用,但这会在以后引起一些问题。我错过了什么,因为我找不到任何理由让我的代码不起作用?
【问题讨论】:
这能回答你的问题吗? C++ template compilation error - recursive type or function dependency 您肯定想要指向连接对象的指针吗?不是自己拥有这些物品吗? 如果您向我们展示您遇到的错误将会有所帮助。一方面,我没有看到为Vertex
定义的 operator<
,因此它不能用作地图中的键。
【参考方案1】:
正式地说,你的方法行不通,因为所有的 STL 容器,包括map
,都必须是完整的类。一个类只有在右大括号之后才是完整的。
不太正式,您定义Vertex
的方式,它包含自身的多个实例。您的目的是表示图表吗?那么unordered_map<Vertex*, int>
可能就是你想要的。根据您计划的Vertex
对象的所有权,您可能希望使用智能指针而不是Vertex*
:shared_ptr<Vertex>
用于一般图,或者如果您的图是树,则可能使用unique_ptr<Vertex>
。
【讨论】:
以上是关于c++中对象类内的对象映射的主要内容,如果未能解决你的问题,请参考以下文章