今天我看到了这段代码:
Today I saw this code:
void CameraTree::dragMoveEvent(QDragMoveEvent *event) { QTreeWidget:dragMoveEvent(event); }我认为上面的代码是错误的.但是:
I think the above code is wrong. But:
void CameraTree::dragMoveEvent(QDragMoveEvent *event) { dragMoveEvent(event);//infinite recursion??? } void CameraTree::dragMoveEvent(QDragMoveEvent *event) { QTreeWidget::dragMoveEvent(event); // I understand is called dragMoveEvent in class QTreeWidget. // But dragMoveEvent is not static?? }并且只警告未使用的标签QTreeWidget",编译成功.: 是什么意思?
And only warned "unused label QTreeWidget", compiled successfully. What does : mean?
推荐答案预期的代码可能是 QTreeWidget::dragMoveEvent(event); 如您所想.如果 CameraTree 继承自 QTreeWidget,QTreeWidget::dragMoveEvent(event) 不需要是静态的才能从 CameraTree 调用>.在 C++ 中,标签用单个冒号 : 表示.QTreeWidget:dragMoveEvent(event); 编译的原因是因为 QTreeWidget: 被解释为一个标签,然后 dragMoveEvent(event); 是一个递归打电话.
The intended code was probably QTreeWidget::dragMoveEvent(event); as you thought. QTreeWidget::dragMoveEvent(event) does not need to be static to be invoked from CameraTree if CameraTree inherits from QTreeWidget. In C++, labels are indicated with a single colon :. The reason QTreeWidget:dragMoveEvent(event); compiles is because QTreeWidget: is interpreted as a label and then dragMoveEvent(event); is a recursive call.
更多推荐
“:"是什么意思?(单个冒号)在“Klass:method(p)"中是什么意思?
发布评论