在这方面没有申明

MKS*_*MKS 0 c++ qt

我是C++的新手,正在使用QT开展项目.我创建了一个名为imageconvert.h的头文件,如下所示:

class ImageConvert
{

private:
IplImage *imgHeader;
uchar* newdata;

public:

ImageConvert();
~ImageConvert();
IplImage* QImage2IplImage(QImage *qimg);
QImage* IplImage2QImage(IplImage *iplImg);
};
Run Code Online (Sandbox Code Playgroud)

我也在imageconvert.cpp文件中定义了那些公共方法.

现在,我想从其他cpp文件调用QImage2IplImage和IplImage2QImage.所以我在该CPP文件中包含了imageconvert.h并调用了这两个函数.

它给出了以下错误:

error: 'QImage2IplImage' was not declared in this scope
error: 'IplImage2QImage' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Mat*_*Mat 5

您定义的函数是ImageConvert类的成员函数.您需要该类的实例才能调用它们.

就像是:

ImageConvert ic;
ic.QImage2IplImage(your_QImage_object);
Run Code Online (Sandbox Code Playgroud)

如果您不需要状态来进行转换,则应该创建这些辅助函数static.然后你可以用:

ImageConvert::QImage2IplImage(your_QImage_object);
Run Code Online (Sandbox Code Playgroud)

没有先创建一个实例ImageConvert.但请注意,您将无法使用imgHeadernewData在那些静态函数中 - 它们是成员变量,只能在该类的实例中使用.

您也可以从类中删除这些函数并将它们放入namespace.