QDate class 的前向声明给出错误
Forward declaration of QDate class gives errors
我正在使用 Qt Widgets 开发应用程序。
在我的头文件中,我喜欢转发声明 classes 而不是包含它们。在头文件的开头我提出了如下声明:
class QFile;
class QDate;
class QTime;
并且,在class中有一个函数声明如下:
static bool addGoldTransaction(QFile *transactionsFile, Gold goldType, OperationType transactionType, float price, float amount, QDate date, QTime time);
当我尝试编译时,出现如下错误:
forward declaration of 'class QDate'
in definition of macro 'QT_FORWARD_DECLARE_STATIC_TYPES_ITER'
in expansion of macro 'QT_FOR_EACH_STATIC_CORE_CLASS'
In file included from moc_transaction.cpp:9:0:
error: initializing argument 6 of 'static bool addGoldTransaction(QFile*, Gold, OperationType, float, float, QDate, QTime)'
其他Qt相关classes的前向声明没有错误。
包含 QDate
头文件可以解决问题,但我想知道:
- 为什么编译器只抱怨
QDate
class 而不抱怨其他 classes? QDate
class 与此问题有什么特别之处吗?
- 如何转发声明
QDate
class?
通过引用 QDate&
和 QTime&
或更好地通过 const 引用 const QDate&
和 [=15] 传递 QDate
和 QTime
类型的 6 和 7 个参数=].
我正在使用 Qt Widgets 开发应用程序。
在我的头文件中,我喜欢转发声明 classes 而不是包含它们。在头文件的开头我提出了如下声明:
class QFile;
class QDate;
class QTime;
并且,在class中有一个函数声明如下:
static bool addGoldTransaction(QFile *transactionsFile, Gold goldType, OperationType transactionType, float price, float amount, QDate date, QTime time);
当我尝试编译时,出现如下错误:
forward declaration of 'class QDate'
in definition of macro 'QT_FORWARD_DECLARE_STATIC_TYPES_ITER'
in expansion of macro 'QT_FOR_EACH_STATIC_CORE_CLASS'
In file included from moc_transaction.cpp:9:0:
error: initializing argument 6 of 'static bool addGoldTransaction(QFile*, Gold, OperationType, float, float, QDate, QTime)'
其他Qt相关classes的前向声明没有错误。
包含 QDate
头文件可以解决问题,但我想知道:
- 为什么编译器只抱怨
QDate
class 而不抱怨其他 classes?QDate
class 与此问题有什么特别之处吗? - 如何转发声明
QDate
class?
通过引用 QDate&
和 QTime&
或更好地通过 const 引用 const QDate&
和 [=15] 传递 QDate
和 QTime
类型的 6 和 7 个参数=].