我需要從具有帶一個參數的構造函數的類創建一個std::unique_ptr
。我找不到有關如何操作的參考資料。這裏是不能編譯的代碼示例:C++如何從構造函數上需要參數的類創建std :: unique_ptr
#include <iostream>
#include <string>
#include <sstream>
#include <memory>
class MyClass {
public:
MyClass(std::string name);
virtual ~MyClass();
private:
std::string myName;
};
MyClass::MyClass(std::string name) : myName(name) {}
MyClass::~MyClass() {}
class OtherClass {
public:
OtherClass();
virtual ~OtherClass();
void MyFunction(std::string data);
std::unique_ptr<MyClass> theClassPtr;
};
OtherClass::OtherClass() {}
OtherClass::~OtherClass() {}
void OtherClass::MyFunction(std::string data)
{
std::unique_ptr<MyClass> test(data); <---------- PROBLEM HERE!
theClassPtr = std::move(test);
}
int main()
{
OtherClass test;
test.MyFunction("This is a test");
}
的錯誤的方式有關I'm初始化std::unique_ptr
,在我的代碼中指出。
原始碼和錯誤可以在here找到。
感謝您幫助我解決這個問題。
使用'std :: make_unique',它將參數轉發給構造函數。 –
我試過了,但是我不能編譯它...... seens認爲std :: make_unique在C++ 11上不受支持...... – Mendes
你能顯示沒有用的代碼嗎? –