如何区分两个Widget类
首先要明白C++命名空间的概念,见 https://www.runoob.com/cplusplus/cpp-namespaces.html
另外,对于命令空间,有如下解释:(见 https://blog.csdn.net/tuziaaa/article/details/102972065 )
- 命名空间可以是不连续的
- 命名空间可以定义在几个不同的部分。
- 命名空间的定义可以不连续的特性使得我们可以将几个独立的接口和实现文件组成一个命名空间。此时命名空间的组织方式类似于我们管理自定义类及函数的方式(接口和实现分离):
- 命名空间的一部分成员的作用是定义类,以及声明作为类接口的函数及对象,则这些成员应该置于头文件中。
- 命名空间成员的定义部分则置于另外的源文件中。
再看程序,首先看命名空间的定义部分,在widget.h里
namespace Ui {
class Widget;
}
再看实现部分,在ui_widget.h里
namespace Ui {
class Widget: public Ui_Widget {};
} // namespace Ui
从实现部分可以看出,对于命名空间Ui里的Widget类,继承于Ui_Widget类,由于类体为空,所以就是Ui_Widget类。