好吧,这让我困扰了几个月,所以我会看看是否有其他人可以帮助解决这个问题。
所以在我的主程序中,我有两种结构(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));
这几乎就是我正在做的事情。
有没有人有过这方面的经验?或者想建议另一种将所有内容存储在向量中的方法?
有关更多详细信息,这是它的要点(有点矛盾,但我做了双关语,所以在那里。)