繁体   English   中英

嵌套 class 在成员 function 中构造,智能指针在 c++

[英]Nested class constructed in a member function with smart pointers in c++

我有以下简单的代码

class Hybrid{
   std::unique_ptr<Bcf> bndfac; 


   void constructbndFace( const int &nn){ 
      bndfac( new Bcf(nn) ); // Does not work (A)
      //std::unique_ptr<Bcf> bndfac( new Bcf(nn) ); // WORKS (B)
   }
 }

class Bcf{
   Bcf(const int nn_) : nn(nn_){}
 private:
    int nn;
 }

当我尝试调用Hybrid::constructbndFace时,我不明白为什么编译器会抱怨std::unique_ptr< Bcf >' does not provide a call operator 如果我使用注释行 (B),编译器将不再报错。

我的问题是,如果我使用 (B) 行,实例化的 object 会通过我在 Hybrid class 中的声明访问,还是我做错了什么Hybrid->bndFace

在 B 行中,您创建了一个临时的 object,其名称隐藏了成员名称。 然后它在下一行用闭合的弧形括号销毁。

如果你想构造 bndfac object,你应该用这个替换你的 B 行:

bndfac = std::make_unique<Bcf>(nn);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM