我正在寻找一种方法让我的构造函数以这种方式引用另一个对象:
Foo object1("File1");
Foo object2("File1");
Run Code Online (Sandbox Code Playgroud)
第一个对象是正常创建的.第二个对象看到已经有一个对象使用"File1"参数并使自己成为对第一个对象的引用.我知道这可能无法以这种方式直接做到这一点.我保留了Foo*的静态向量来跟踪分配的对象.
我知道我可以创建类指针的所有成员,并且对于第一种情况创建(新)它们.在第二种情况下,我不会创建它们并将它们指向第一个对象.此外,第二个对象的寿命比第一个更短.
那么,有一种简单/优雅的方式来做到这一点吗?
编辑:感谢您提供所有出色的解决方案.我喜欢他们,但我只能使用一个.我将保留所有这些知识,以供将来参考.
我正在选择static map <string, FooObject*>解决方案.起初我以为这是愚蠢的,但经过进一步的审查,它吸引我优雅.
我现在能看到的唯一补充是添加一个到FooObject的链接计数器.这种方式在Foo的构造函数中我可以递增链接计数器.在析构函数中,递减计数器.如果计数器为零,则将其从地图中删除.这样就没有内存泄漏,并且对象可以以任何顺序被破坏.我想这种方法是shared_ptr esque.归功于@Travis.
谢谢,詹姆斯.
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |