這是我在OpenCV教程中找到的一段代碼(來源https://github.com/Itseez/opencv/blob/master/samples/cpp/tutorial_code/core/file_input_output/file_input_output.cpp)。由於代碼全部在一個文件中,我嘗試將它分離爲標題和cpp。我的問題是我無法找到如何正確地做到不生成錯誤C4430:缺少類型說明符 - int假定。注意:C++不支持default-int。如何將構造函數明確聲明爲單獨的.h&.cpp文件?
class MyData
{
public:
MyData() : A(0), X(0), id() {}
explicit MyData(int) : A(97), X(CV_PI), id("mydata1234") // explicit to avoid implicit conversion
{}
void write(FileStorage& fs) const //Write serialization for this class
{
fs << "{" << "A" << A << "X" << X << "id" << id << "}";
}
public: // Data Members
int A;
double X;
string id;
};
所以這是我停留在一部分:我試過
MyData() : A(0), X(0), id() {}
explicit MyData(int) : A(97), X(CV_PI), id("mydata1234") // explicit to
的聲明(頭文件):
class MyData
{
public: // Data Members
int A;
double X;
std::string id;
MyData() ;
explicit MyData(int);
void write(cv::FileStorage& fs) const;
void read(const cv::FileNode& node);
};
#endif
中的.cpp事情
MyData::MyData() : A(0), X(0), id() {} // this is simple
但接下來呢?
MyData::MyData(int) :
A(97), X(CV_PI), id("mydata1234") {};
MyData::write(cv::FileStorage& fs) const
{ // ... it will stuck here C4430
}
使用Visual Studio 2010
在構造函數中的int參數的目的是什麼? – Ajay
檢查原始代碼:'// read'和'// write'閱讀#132:'MyData m;'write#77:'MyData m(1);'數字1表示我們將使用一個字符串「文件寫入操作期間的「mydata1234」。在閱讀過程中,我們將從文件'fs [「MyData」] >> m;'#137(?)'中讀取一些特定的東西。據我瞭解原始代碼。所以你可以傳遞任何東西給構造函數或傳遞int。我不知道作者爲什麼這樣寫,但我希望按照他的意圖去做,但將其分配給兩個文件。 –