c++ - ":"(一个冒号)在 "Klass:method(p)"中是什么意思?

标签 c++ syntax

今天我看到这段代码:

void CameraTree::dragMoveEvent(QDragMoveEvent *event)
{
    QTreeWidget:dragMoveEvent(event);
}

我认为上面的代码是错误的。但是:

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”,编译成功。 : 是什么意思?

最佳答案

如您所想,预期的代码可能是 QTreeWidget::dragMoveEvent(event);。如果 CameraTree 继承自 QTreeWidget,则 QTreeWidget::dragMoveEvent(event) 无需静态即可从 CameraTree 调用>。 在 C++ 中,标签用单个冒号 : 表示。 QTreeWidget:dragMoveEvent(event); 编译的原因是因为 QTreeWidget: 被解释为标签然后 dragMoveEvent(event); 是一个递归打电话。

关于c++ - ":"(一个冒号)在 "Klass:method(p)"中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47149006/

相关文章:

python - 将 C++ opencv 移植到 Python - 数组问题

haskell - 和有什么区别。 (点)和 $(美元符号)?

ios - NSUserDefault setObject 的现代 objective-c 语法是什么?

C++ 'std::out_of_range'

C++ 将 istream in 条件运算符传递给函数

c++ - 供其他人使用的头类文件

c++ - Boost 是否使用合法的 C++ 预处理指令语法?

javascript - 我找不到的奇怪的 'expected ;' 错误

Java 语法 - 它有什么作用?

c++ - Code::Blocks 没有制作目标文件