在 C++(使用 openCV)中,我在头文件中定义了我的调用,如下所示:
class myClass
{
public:
myClass ( cv::Mat& _mat );
void initClass ( cv::Mat& img, cv::Mat& mask, myClass& src, myClass& dst );
}
然后在相应的“cpp”文件中,我这样定义:
myClass::myClass ( cv::Mat& _mat )
{
model = _model;
....
}
void myClass::initClass ( cv::Mat& img, cv::Mat& mask, myClass& src, myClass& dst )
{
//some work here
}
然后我将其头文件包含在“main.cpp”中,并尝试这样调用它:
cv::Mat test ( height, width, CV_8UC3 );
cv::Mat test2 ( height, width, CV_8UC3 );
myClass::myClass auM ( test );
myClass::myClass buM ( test );
myClass::initClass ( img, img, auM, buM );
但是最后两行都给出了错误,说:
block 引用>cannot determine which instance of overloaded function "myClass::myClass" is intended
对于线条
myClass::myClass auM ( test ); myClass::myClass buM ( test );
和
block 引用>a nonstatic member reference must be relative to a specific object
对于线路
myClass::initClass ( img, img, auM, buM );
我搜索了一下,发现它与我的类定义有关,但我无法解决它。有人可以帮助我吗?
最佳答案
使用一个构造函数参数实例化类的语法是
myClass auM(test);
您不需要“调用”myClass::myClass
。至于成员函数initClass
,您将其视为静态方法来调用。需要在实例上调用非静态成员函数:
auM.someMethod( arg1, arg2, .... );
关于c++ - 类定义和调用有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979697/