【发布时间】:2012-06-10 01:16:56
【问题描述】:
好吧,这让我困扰了几个月,所以我会看看是否有其他人可以帮助解决这个问题。
所以在我的主程序中,我有两种结构(solarBody_t、ship_t),它们都派生自同一个基类(physical_t)。我制作了两个对象的向量,因为我不能将 solarBody 和船放在同一个向量中。它们都是哑指针向量。
我尝试使用 boost::shared_ptrs 的向量将两者放在同一个向量中。现在,据我了解,shared_ptrs 应该具有与哑指针相同的语义和语法(例如 foobar->mass = 42; 应该适用于两者)。但是,只是将声明更改为 boost::shared_ptr 的向量到哑指针,当我尝试将某些内容推送到 shared_ptrs 的向量时,它会给我一个错误。
据我所知,这应该可行。 boost 文档给出了
的例子boost::shared_ptr<int> p(new int(2));
这几乎就是我正在做的事情。
有没有人有过这方面的经验?或者想提出另一种将所有内容存储在向量中的方法?
更多细节,here's the gist of it(有点矛盾,但我做了双关语,所以就在那里。)
【问题讨论】:
-
你可能不想要
shared_ptr。见Which kind of pointer do I use when?。
标签: c++ boost vector shared-ptr