Like I said in the title, I can't pass an inner class object as argument for outer class' constructor. Below is the class header;
class Corner {
public:
    Corner(cv::Mat imageMat, int flag, feat::Corner::cornerDetectorHarris* cdh = nullptr);
    ...
    class cornerDetectorHarris {...};
    ...
};  
Visual Studio Community has no problem with the codeabove. Problem is when I try to define the function in .cpp file;
feat::Corner::Corner(cv::Mat imageMat, int flag, feat::Corner::cornerDetectorHarris* cdh) {}
VSC claims a E0493 error under the second Corner, "no instance of overloaded function "feat::Corner::Corner" matches the specified type". Here is the error code;
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 
If I remove the cornerDetectorHarris pointer the error goes away so I'm fairly sure it's the problem. I tried removing the default value for argument but it didn't change anything.
 
    