即使我声明了构造函数,我也遇到了“c2512”错误。我的代码是这样的:在我的“first.h”文件中,我将其声明为:
class myClass
{
public:
tmpM ( cv::Mat& _model );
}
然后在我的“first.cpp”中我做了:
#include "first.h"
myClass::tmpM ( cv::Mat& _model )
{
...
}
然后我将这个“first.h”包含在我的“second.h”中,然后将这个“second.h”包含在我的“third.h”中,并在我的“third.cpp”中调用这个类,如下所示:
cv::Mat myMat ( height, width, CV_8UC3 );
tmpM aM ( myMat );
但这给出了一个 c2512 错误,说
没有合适的默认构造函数可用
我确实对此进行了搜索,发现我应该自己构建一个默认构造函数,并且我尝试在我的“first.h”中这样做:
class myClass
{
public:
tmpM ( cv::Mat& _model) {};
}
然后得到一个错误说:
函数“myClass::tmpM”已经有一个主体
我尝试了其他几种方法来做到这一点,但仍然无法解决。我认为我不需要在这里构建默认构造函数,但仍然对此感到困扰。有人可以帮助我吗?
编辑
好的,根据您的建议,我将其更改为以下形式:
class myClass
{
public:
myClass(cv::Mat& _model ) : tmpM (_model)
{
}
private:
cv::Mat& tmpM;
};
然后在我的“first.cpp”中,我收到一条错误消息
声明不兼容
这怎么可能解决?