就像我在标题中说的那样,我无法将内部类对象作为外部类的构造函数的参数传递。下面是类头;
class Corner {
public:
Corner(cv::Mat imageMat, int flag, feat::Corner::cornerDetectorHarris* cdh = nullptr);
...
class cornerDetectorHarris {...};
...
};
Visual Studio Community上面的代码没有问题。问题是当我尝试在.cpp文件中定义函数时;
feat::Corner::Corner(cv::Mat imageMat, int flag, feat::Corner::cornerDetectorHarris* cdh) {}
VSC要求所述第二下一个E0493错误Corner
,"no instance of overloaded function "feat::Corner::Corner" matches the specified type"
。这是错误代码;
Severity Code Description Project File Line Suppression State
Error (active) E0493 no instance of overloaded function "feat::Corner::Corner" matches the specified type bpv2 C:\Users\ASUS\source\repos\bpv2\bpv2\feat.cpp 533
如果我删除了cornerDetectorHarris
指针,错误就会消失,因此我很确定这是问题所在。我尝试删除参数的默认值,但没有任何改变。
只需在依赖于内部类的任何方法之前声明内部类。当然,您可以根据需要甚至在标题中定义方法。
不过,我不太确定为什么要这样做。为什么不简单地在cornerDetectorHarris
外部和之前声明Corner
呢?
这里有一个关于该主题的有用讨论:为什么要在C ++中使用嵌套类?
class Corner {
public:
class cornerDetectorHarris {...};
Corner(cv::Mat imageMat, int flag, feat::Corner::cornerDetectorHarris* cdh = nullptr)
{
//do stuff
}
// etc
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句