这是我在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。我不知道作者为什么这样写,但我希望按照他的意图去做,但将其分配给两个文件。 –