首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >得到了第三方呼叫的C2758错误

得到了第三方呼叫的C2758错误
EN

Stack Overflow用户
提问于 2012-10-21 12:04:58
回答 2查看 210关注 0票数 0

我在“first.h.h”中宣布我的班级如下:

代码语言:javascript
运行
复制
class MyClass
{
public:
    MyClass ( cv::Mat& _model ) : tmpM ( _model )
    {
    };
private:
cv::Mat& tmpM;
}

然后在"first.cpp“中,我这样使用它:

代码语言:javascript
运行
复制
MyClass::tmpM ( cv::Mat& _model )
{
    ...
}

然后,我将这个"first.h“包含在我的”substd.h“中,并将它包含在我的”第三个d.h“中,然后在我的"third.cpp”中尝试这样做:

代码语言:javascript
运行
复制
cv::Mat testMat ( height, width, CV_8UC3 );
tmpM myM ( testMat );

然后我犯了错误,说:

‘'MyClass::tmpM':不是函数 错误C2512:'MyClass':没有适当的默认构造函数可用 IntelliSense:声明与"cv::Mat& MyClass::tmpM“不兼容 IntelliSense:缺少显式类型(假设为“int”)

在你问之前,我不得不说我确实搜索并询问了这个问题,但仍然无法解决。我是个学习者,有人能帮我解决这个问题吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-21 12:09:04

你犯的错误很明显。

代码语言:javascript
运行
复制
'MyClass::tmpM': not a function

意味着tmpM不是一个函数,它来自声明

代码语言:javascript
运行
复制
MyClass::tmpM ( cv::Mat& _model ) {
    ...
}

我认为您很困惑,希望声明构造函数,在这种情况下,您应该在头文件中写入(我添加了一个默认构造函数)。

代码语言:javascript
运行
复制
class MyClass {
public:
    MyClass ( cv::Mat& _model );
private:
    MyClass(); // Private default constructor
    cv::Mat& tmpM;
}

然后在cpp文件中

代码语言:javascript
运行
复制
MyClass::MyClass( cv::Mat& _model ) {
    // Do things
}

这将解决第二条错误消息:

代码语言:javascript
运行
复制
error C2512: 'MyClass': no appropriate default constructor available

您的第三个文件也是有问题的,因为

代码语言:javascript
运行
复制
tmpM myM ( testMat );

tmpM不是一种类型。我想你是说

代码语言:javascript
运行
复制
MyClass myM( testMat );

这就是最后两个错误告诉你的。

票数 2
EN

Stack Overflow用户

发布于 2012-10-21 12:08:39

你宣称:

代码语言:javascript
运行
复制
cv::Mat& tmpM;

并再次声明:

代码语言:javascript
运行
复制
MyClass::tmpM ( cv::Mat& _model )

在第一个例子中,您可以在object上声明。在第二步,您将声明一个函数。

修复其中一个或另一个以便它们匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12997638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档