QDate类的前向声明会产生错误

问题描述 投票:0回答:1

我正在使用Qt Widgets开发一个应用程序。

在我的头文件中,我喜欢转发声明类而不是包含它们。在头文件的开头我提出了如下声明:

class QFile;
class QDate;
class QTime;

并且,类中有一个函数声明如下:

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相关的类的前向声明没有错误。

包括QDate头文件解决了这个问题,但我想知道:

  1. 为什么编译器只抱怨QDate类,而不抱怨其他类?与此问题相关的QDate类有什么特别之处吗?
  2. 我怎样才能转发声明QDate类?
c++ qt qt-creator qdate
1个回答
0
投票

通过引用QDateQTime或更好的参考QDate&QTime&传递类型const QDate&const QTime&的6和7个参数。

© www.soinside.com 2019 - 2024. All rights reserved.