【发布时间】:2021-06-21 02:26:02
【问题描述】:
我想把shared_ptr<Derived>的向量转换成shared_ptr<Base>的向量:
class Base
{
};
class Derived : public Base
{
};
size_t ConvertVecBasePtr(const vector<std::shared_ptr<Base>>& p)
{
return p.size();
}
int main()
{
vector<std::shared_ptr<Derived>> d;
ConvertVecBasePtr(d);
return 0;
}
我收到ConvertVecBasePtr 的错误:
错误 C2664: 'size_t ConvertVecBasePtr(const std::vectorstd::shared_ptr
> &)': 无法从 'std::vectorstd::shared_ptr>' 到 'const std::vectorstd::shared_ptr > &'
你能帮我解决它吗?例如:我可以使用另一个容器来代替 std::vector 吗?
【问题讨论】:
-
std::shared_ptr<Derived>可以转换为std::shared_ptr<Base>,但这样的向量是不可转换的。您需要创建一个新向量,您将在其中推送转换后的指针。
标签: c++ vector shared-ptr