1 IntelliSense: 在没有适当 operator() 的情况下调用类类型的对象或将函数转换到指向函数的类型 d:\code-projectsvs\opencv\tqbiaos\tqbiaos\main.cpp 29
时间: 2023-07-21 07:08:16 浏览: 519
这个错误通常出现在尝试将一个类的对象作为函数调用的参数,而该类没有重载`operator()`运算符。另外一个可能的情况是将一个函数转换为指向函数的指针类型,而函数没有声明为指针类型。
在你提供的代码中,出现这个错误的位置在第29行。根据错误信息,我们可以看出可能是在将`contours[i]`作为`moments`构造函数的参数时出现了问题。`moments`是一个类,它的构造函数没有声明为接受一个`vector<Point>`类型的参数。
为了解决这个问题,我们应该将`moments`的构造函数替换为`moments()`,并将`contours[i]`作为参数传递给`moments()`函数,如下所示:
```c++
Moments moments = moments(contours[i]);
```
应该改为:
```c++
Moments moments = moments(contourArea(contours[i]));
```
这里将`contours[i]`的面积作为参数传递给了`moments()`函数,这是计算轮廓的几何矩所必需的。
相关问题
1 IntelliSense: 此声明没有存储类或类型说明符 c:\Users\huijuan.li\Documents\C++练习\图像处理\图像处理\加载位图.cpp 2 1 图像处理
根据引用\[1\]中的代码片段,错误的原因是在头文件中声明类的时候,函数的声明写错了。正确的声明方法应该是在头文件中声明函数的原型,而函数的定义应该写在.cpp文件中。在这个例子中,正确的声明方法是在头文件中写出函数的原型,然后在.cpp文件中定义函数的具体实现。
根据引用\[2\]中的代码片段,这是一个创建窗口的代码示例。其中,第一个参数是窗口的类名,第二个参数是窗口的标题。在这个例子中,窗口的标题被设置为"标题"。
根据引用\[3\]中的内容,MBCS是指多字节字符集,其中包含了单字节字符和双字节字符。在Windows中,MBCS的实现通常是双字节字符集(DBCS)。
综上所述,根据提供的引用内容,可以得出以下结论:
1. 错误"IntelliSense: 此声明没有存储类或类型说明符"是由于在头文件中函数声明写错导致的。
2. 创建窗口时,可以通过指定窗口的类名和标题来设置窗口的属性。
3. MBCS是一种多字节字符集,包含了单字节字符和双字节字符。在Windows中,MBCS的实现通常是双字节字符集(DBCS)。
#### 引用[.reference_title]
- *1* [我遇到的错误:此声明中没有存储类或类型说明符](https://blog.csdn.net/qinxinger/article/details/84402300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容](https://blog.csdn.net/King_weng/article/details/88430711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
8 IntelliSense: 不允许使用抽象类类型 "Cball" 的对象: 纯虚拟 函数 "CObject::Update" 没有强制替代项 c:\Users\Administrator\Documents\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\main.cpp 50 8 ConsoleApplication1
这个错误是由于您在使用抽象类类型 "Cball" 的对象时,纯虚拟函数 "CObject::Update" 没有被强制替代导致的。抽象类是指包含至少一个纯虚拟函数的类,而纯虚拟函数是指在基类中声明但没有定义的函数。由于纯虚拟函数没有默认实现,因此只能通过在派生类中重写它来提供具体的实现。
要解决此错误,您需要在派生类 "Cball" 中重写纯虚拟函数 "CObject::Update" 并提供具体的实现。例如,您可以在 "Cball" 类中添加一个具有相同签名的函数,并在函数体内编写您希望执行的操作。这样,您就可以在使用 "Cball" 对象时避免出现该错误。
另外,请确保在创建 "Cball" 对象时,您使用的是派生类的实例而不是抽象类的实例。因为抽象类无法实例化,您只能使用派生类的实例来创建对象。
希望这能帮助您解决问题!如果需要进一步的帮助,请随时提问。