- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑 Base
类和两个 Child
类:
class Base
{
public:
~Base() = default;
virtual void mouseCallback() = 0; // this is overriden by the Childs!
void mouseCallback2() { std::cout << "mouseCallback2 OK" << std::endl; }//Not overriden
};
class Child1 : public Base
{
public:
~Child1() = default;
void mouseCallback() override;
};
class Child2 : public Base
{
public:
~Child2() = default;
void mouseCallback() override;
};
实现在哪里:
void Child1::mouseCallback()
{
std::cout << "Child 1 OK" << std::endl;
}
void Child2::mouseCallback()
{
std::cout << "Child 2 OK" << std::endl;
}
我有我的 CameraVision
类:
class CameraVision
{
public:
// ...
void init();
static void callback(int event, int x, int y, int flags, void* userdata);
private:
Base* mBase; // A pointer to the Base class!
}
其中包含init()
方法如下:
void CameraVision::init()
{
mBase = new Child1();
// Here I set the callback
cv::setMouseCallback("Title", callback, &mBase);
}
因此当鼠标有一个事件时我有这个,覆盖的方法使我的应用程序崩溃。
void CameraVision::callback(int event, int x, int y, int flags, void* userdata)
{
if (event == cv::EVENT_LBUTTONDOWN)
{
Base* tof = static_cast<Base*>(userdata);
tof->mouseCallback2(); // THIS WORKS!
// But this is what I need
tof->mouseCallback(); // ERROR!!!!!!
}
}
为什么我不能通过 Child1
的继承来使用 mouseCallback()
?
我遇到了一个错误
:
Exception thrown at 0x000000013F391938 in Demo.exe: 0xC0000005: Access violation executing location 0x000000013F391938
我期待着输出
:
mouseCallback2 OK
Child 1 OK
最佳答案
mBase是Base*类型,那么就不用&了,简单cv::setMouseCallback("标题", callback, mBase);
&mBase 会给你一个指向指针的指针,所以你的 static_cast 不会给你原来的 mBase 指针,而是它的地址。不确定第一个回调是如何工作的,两者都应该导致 UB。
关于继承类上的 C++ OpenCV mouseCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954349/
我对 OpenCV 有疑问。我已经尝试了其他问题的实现,但问题仍然存在。我有一个名为 MainWindow 的类,在该类中的某个时刻,它创建了一个名为“rectified”的 NamedWindow。
考虑 Base 类和两个 Child 类: class Base { public: ~Base() = default; virtual void mouseCallback() =
对于 OpenCV 和 Python,是否有任何方法可以删除使用 cv2.setMouseCallback(window_name, function_name) 设置的鼠标回调?为函数名称传递 No
在带有 C++ 的 OpenCV 中,有没有办法删除 mouseHandler(int event, int x, int y, int flags, void* param) {} 通过函数添加到窗
使用 OpenCV 2.4.3,当用户移动鼠标时,我试图在以鼠标 (x,y) 位置为中心的图像顶部绘制一个圆圈,一旦鼠标停止,该圆圈就应该在那里移动(那一刻应该只显示只画了一个圆圈的原始图像)。我以为
如标题所示,我在基于类的 C++ 结构中实现 OpenCV 的 mouseCallback 函数时遇到了一些问题。请允许我解释一下。我定义了一个名为 BriskMatching 的类,我在其中创建了一
我是一名优秀的程序员,十分优秀!