1 IntelliSense: 在没有适当 operator() 的情况下调用类类型的对象或将函数转换到指向函数的类型 d:\code-projectsvs\opencv\tqbiaos\tqbiaos\main.cpp 29
时间: 2023-07-21 12:08:16 浏览: 1123
这个错误通常出现在尝试将一个类的对象作为函数调用的参数,而该类没有重载`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()`函数,这是计算轮廓的几何矩所必需的。
相关问题
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" 对象时,您使用的是派生类的实例而不是抽象类的实例。因为抽象类无法实例化,您只能使用派生类的实例来创建对象。
希望这能帮助您解决问题!如果需要进一步的帮助,请随时提问。
ui.textEdit.语句报错 1 IntelliSense: expression must have class type c:\Users\qiubo\Desktop\65test\65test\test.cpp 21 2 65test 2 IntelliSense: expected a member name c:\Users\qiubo\Desktop\65test\65test\test.cpp 25 1 65test
这个错误是因为您的代码中使用了错误的语法,导致IntelliSense无法识别它。
根据您提供的信息,我猜测您可能是这样使用ui.textEdit的:
```
ui.textEdit.setPlainText("Hello World!");
```
这是不正确的语法,应该改为:
```
ui.textEdit->setPlainText("Hello World!");
```
注意到textEdit是一个指针,所以需要用箭头运算符“->”而不是点号“.”来访问它的成员函数。
请尝试修改您的代码并重新编译,看看是否可以解决这个问题。
阅读全文