c++类中的标记区域

labelled region in c++ class

本文关键字:区域 c++      更新时间:2023-10-16

我在做Qt-gui编程,在信号和插槽部分,我有以下语法:

class Myclass
{
   public slot:
   signal:
}

这是否允许在类中有一个标记区域,因为通常我看到过:

class Myclass
{
    public:
    //declarations
}

访问修饰符也可以有标签吗?或者它是Qt中的特定语法吗?

请澄清。感谢您的帮助。提前谢谢。

这些标签是C++的Qt扩展(http://woboq.com/blog/how-qt-signals-slots-work.html)。MOC编译器解析文件并生成相关的粘合逻辑。详细信息在链接中。

Qt的头定义了这些预处理器宏,因此在编译时,slot扩展到空字符串,signal扩展到protected(在Qt 4中)或public(在Qt5中)。因此,就C++编译器而言,它看到的内容类似于:

class Myclass
{
   public :  /* was public slots */
   public:   /* was signals */
}

例如上面的例子。

当元对象编译器moc在同一声明上运行时,它解释(未替换的)Qt关键字,并使用它们来组成元对象。