class BaseShader {
std::unique_ptr<HandleInterface> handle_;
public:
BaseShader();
BaseShader(std::unique_ptr<HandleInterface> handle_ptr);
.cpp
BaseShader::BaseShader(std::unique_ptr<HandleInterface> handle_ptr) {
handle_.reset(handle_ptr.get());
}
//BaseHandle implements HandleInterface
BaseShader::BaseShader():BaseShader(std::make_shared<BaseHandle>()) {
}
我将如何正确初始化我的 unique_ptr handle_
?
我想像这样使用它BaseShader s(std::make_shared<BaseHandle>());
叮当告诉我
error: no matching constructor for initialization of 'BaseShader'
BaseShader::BaseShader():BaseShader(std::make_shared<BaseHandle>()) {
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我可能搞砸了。
1.) 我的构造函数参数是否正确?BaseShader::BaseShader(std::unique_ptr<HandleInterface> handle_ptr)
2.) 如果 1.) 为真,是handle_.reset(handle_ptr.get());
初始化我的 handle_unique_ptr 的正确方法吗?