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>()) {
}
handle_
unique_ptrを正しく初期化するにはどうすればよいですか?
こんな感じで使いたい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.) が true の場合handle_.reset(handle_ptr.get());
、handle_unique_ptr を初期化する正しい方法は?