c++ - 派生类的 Push_back shared_ptr

标签 c++ containers shared-ptr

我不明白我的代码发生了什么:为什么我收到“没有匹配的函数调用 push_back”错误。我只能猜测这是一个新的错误......

int main(){
  typedef std::tr1::shared_ptr<Base> Base_p;
  typedef std::vector<Base_p> VectorPointers_t;

  std::tr1::shared_ptr<Derived> myDer01(Derived); 
  VectorPointers_t myVector = VectorPointers_t();
  myVector.push_back(myDer01);  
}

最佳答案

试试这个:

VectorPointers_t myVector;

myVector.push_back(Base_p(new Derived));

您的代码中存在一个大错误:声明 myDer01 的行实际上声明了一个函数 而不是一个变量。但是即使你写的是 (Derived()) 而不是 Derived 也是错误的,因为你不能从一个对象构造一个共享指针——只能从一个指针!所以你真的想说 new Derived

关于c++ - 派生类的 Push_back shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788538/

相关文章:

c++ - 删除 std::shared_ptr 的条件

c++ - C++0x 是否支持 __stdcall 或 extern "C"capture-nothing lambdas?

c++ - 从 C 到 C++ 的数据包争论或...... Variant 和 Any 都不是 union

docker - 直接在容器内进行开发

delphi - 项目控件将其自身从容器控件中删除

c++ - 在类中定义变量时共享指针中的递归

c++ - 访问冲突调用非导出的 DLL 函数 C++

c++ - 什么是构造函数在c++中的实际应用

sql-server - .NET Core API 无法通过 docker-compose 连接到数据库

c++ - 缓存优化和多态性