我不明白带箭头的线条到底在做什么。是否包括该课程中的那个班级?
Food.all.sample
答案 0 :(得分:2)
这是类QToolButton
的前向声明(如果你google 转发声明c ++ ,你会发现很多关于这个主题的好搜索结果)< / p>
这允许对指针和引用使用类QToolButton
,只要{E}不会在该特定的头文件中访问QToolButton
的成员。
前向声明的目的是加快编译速度。如果您不使用前向声明,则需要包含QToolButton
的头文件。
这意味着,包含EnhancedLineEdit
的头文件的每个源文件也间接包含QToolButton
的头文件,即使该类未在源文件本身中使用,这将减慢编译过程。
因此,只有EnhancedLineEdit
的源文件需要包含<QToolButton>
。包含EnhancedLineEdit
头文件的源文件不需要这样做,除非他们想直接使用类QToolButton
。否则,前向声明足以允许在QToolButton
的头文件中使用指向EnhancedLineEdit
的指针。
答案 1 :(得分:1)
这一行
class QToolButton;
在当前(似乎是全局的)命名空间中声明类QToolButton
,而不定义类本身。也就是说,此声明在范围中引入了类型class QToolButton
。该类用于类EnchancedLineEdit
private:
QToolButton *clearBtn;
事实上,行
就足够了private:
class QToolButton *clearBtn;
^^^^^
因为它还在当前命名空间中声明了类QToolButton
。
这些规格
class QToolButton;
和
class QToolButton
可能在此声明class QToolButton *clearBtn;
中使用的称为详细类型名称。
在代码段中,您展示了数据成员声明
QToolButton *clearBtn;
在您访问QToolButton
的成员之前,不要求class QToolButton
类型完整。