2017-12-23 28 views
0

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 헤더 파일을 포함

이 문제를 해결하지만 난 궁금해 :

  1. 왜 컴파일러가 다른 클래스에 대해 불평하지 않는 동안 약 QDate 클래스를 불평합니까? 이 문제와 관련하여 QDate 수업과 관련하여 특별한 것이 있나요?
  2. QDate 클래스를 어떻게 전달할 수 있습니까?
+4

'addGoldTransaction'의 여섯 번째 매개 변수는 값에 의해'QDate'를 취합니다. 그래서 전체 정의가 복사되어야합니다 (즉 크기를 아는). forward 선언은 객체의 크기에 대해서는 아무 것도 말하지 않는 이름을 소개합니다. –

+0

'addGoldTransaction'의 7 번째 매개 변수는 값에 의해'QTime'을 취합니다. 그러나 그것은 아무 것에도 불평하지 않습니다. 'QDate' 클래스는 무엇이 특별합니까? – ukll

답변

0

패스 6 종류의 QDateQTime 참조하여 QDate&QTime& 이상 const를 참조하여 const QDate&const QTime&의 7 개 인수.

+0

예, 문제가 해결되었습니다. 하지만 컴파일러가 질문에서와 같이 함수를 선언 할 때 여섯 번째 (QDate)에 대해 불평하는 동안 왜 일곱 번째 인수 (QTime)에 대해 불평하지 않습니까? – ukll

+1

컴파일러가 첫 번째 오류 발생을 한 줄로보고한다고 가정합니다. 6 번째 인수 만 수정하면 컴파일러는 7 번째 인수에서 새로운 오류를보고합니다. –

+0

그래, 방금 해봤 어. 문제를 해결합니다. 이제는 QDate와 QTime 모두에 대해 전달 선언을 사용할 수 있습니다. – ukll