gpt4 book ai didi

c++ - 如何将显式声明的构造函数分离到 .h 和 .cpp 文件中?

转载 作者:行者123 更新时间:2023-11-30 02:31:27 25 4
gpt4 key购买 nike

这是我在 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。

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

最佳答案

要在类定义之外为您的 write 方法添加主体,格式为:

return-type classname::methodname(parameters)
{
}

所以在这种情况下:

void MyData::write(cv::FileStorage& fs) const 
{

}

关于c++ - 如何将显式声明的构造函数分离到 .h 和 .cpp 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com