[英]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.