Qt 위젯을 사용하여 응용 프로그램을 개발하고 있습니다.QDate 클래스의 전달 선언에서 오류가 발생합니다.
내 헤더 파일에 선언 클래스를 포함하는 대신 전달하는 것을 좋아합니다.
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
헤더 파일을 포함
이 문제를 해결하지만 난 궁금해 :
- 왜 컴파일러가 다른 클래스에 대해 불평하지 않는 동안 약
QDate
클래스를 불평합니까? 이 문제와 관련하여QDate
수업과 관련하여 특별한 것이 있나요? QDate
클래스를 어떻게 전달할 수 있습니까?
'addGoldTransaction'의 여섯 번째 매개 변수는 값에 의해'QDate'를 취합니다. 그래서 전체 정의가 복사되어야합니다 (즉 크기를 아는). forward 선언은 객체의 크기에 대해서는 아무 것도 말하지 않는 이름을 소개합니다. –
'addGoldTransaction'의 7 번째 매개 변수는 값에 의해'QTime'을 취합니다. 그러나 그것은 아무 것에도 불평하지 않습니다. 'QDate' 클래스는 무엇이 특별합니까? – ukll