myMain.cpp
初始化:C++:的unique_ptr不正確
#include <memory>
#include "myClass.h"
static std::unique_ptr<myClass> classPtr; // Error thrown here
...
我在全局範圍內初始化,因爲所有的數據加載到這個類的屬性需要一段時間,所以我想這樣做一次,並有該數據一直存在,直到我給出一個明確的命令來刪除它(classPtr.reset(nullptr)
)。
當我嘗試編譯這個:g++ myMain.cpp -o myMain.o
我得到:error: expected initializer before '<' token
。
爲什麼我得到這個錯誤?
我在myClass.h
和myClass.cpp
中定義了myClass
;我認爲這個錯誤與構造函數有關。我簡化了代碼&,僅包含下面的重要行。
myClass.h
:
class myClass {
std::string dataPath;
std::vector<double> data;
public:
myClass(std::string P = "./path/to/data-file.csv");
~myClass() {}
const double findPercentile(double percentile = 0.0);
}
編輯:繼從@FrançoisAndrieux我有固定我的構造函數提示。
myClass.cpp
:
myClass::myClass(const std::string P) :
dataPath(P) {
// read data-sets into class member variables
}
注意與你的問題有關:你聲明你的構造函數爲'myClass(std :: string)',但實現它爲'myClass(const std :: string)'。你定義的參數具有默認值'「./path/to/data-file.csv」',但是你忽略了參數並始終使用默認值進行初始化。 –