在C ++中使用指向内部类对象的指针作为外部类构造函数参数

一名坏学生

就像我在标题中说的那样,我无法将内部类对象作为外部类的构造函数的参数传递。下面是类头;

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 C++ 中从内部类对象获取外部类对象

C ++外部函数,带有指向函数作为参数的指针,在带有成员函数的类内部使用

C ++:外部类中静态内部类实例的构造和销毁

带有对象指针作为参数的C ++复制构造函数

C ++对外部类内部的内部类的引用

指向函数的C ++指针作为参数

为什么不构造内部类?C ++

在内部匿名函数 C# 中使用作为参数传递给函数的对象

从内部类对象访问外部类函数

Arduino C ++:从外部类创建对象

在模板中声明指向内部类对象的静态指针

C ++在函数中使用指向结构的指针

如何从内部类中访问私有构造函数?C++14

加载外部类C ++

C const 指向 const struct 数组的指针作为函数参数

使用 C++11 将指向成员函数的指针作为参数传递

使用Rcpp公开以指向对象的指针作为参数的构造函数

从匿名内部类获取封闭类对象作为函数参数

如何使用 Action<T> 参数声明 c# 构造函数(例如在 C 中传递指向 func 的指针)

C ++外部类访问内部类的私有-为什么禁止

从局部类C#调用Base实体构造函数

C ++:使用int指针指向在函数内部创建的向量

无法在内部函数中使用外部类型参数的理由是什么?

在内部类中使用外部类实例作为自己?

C ++内部类的替代方法

C ++模板和内部类

C ++如何返回内部类

在C中使用指向char的指针的通用交换函数

C中使用数组作为参数的函数