2013-04-27 150 views
-1

我有2個文件,Chrono.cpp和Chrono.h。C++類的構造函數混淆

Chrono.h

class Appointment { 
public: 

    Appointment(Date d , string n) ; 
    Appointment() ; 

    int get_day() const { return date.d; } 
    int get_month() const { return date.m; } 
    int get_year() const { return date.y; } 
    string get_name() const { return name ; } 

    Date date ; 
    string name ; 

} ; 

Chrono.cpp

Appointment::Appointment(Date dd , string nn) 
    : date(dd) , name(nn) 
{ 
    //if(!is_date(yy,mm,dd))throw Invalid(); 
} 

我繼續得到這個錯誤,或者說,它不匹配.h文件的變化。

Chrono.cpp:17:1: error: prototype for āChrono::Appointment::Appointment(Chrono::Date, String)ā does not match any in class āChrono::Appointmentā 
Chrono.h:34:7: error: candidates are: Chrono::Appointment::Appointment(Chrono::Appointment&&) 
Chrono.h:34:7: error:     Chrono::Appointment::Appointment(const Chrono::Appointment&) 
Chrono.h:42:2: error:     Chrono::Appointment::Appointment(Chrono::Date, std::string) 
Chrono.h:41:2: error:     Chrono::Appointment::Appointment() 

這兩個文件都有#include字符串,並且.cpp文件位於標準名稱空間中。我也嘗試在頭文件中使用std :: string。目前爲止,我所做的一切都沒有奏效。任何幫助表示讚賞。還要注意日期是在其他地方定義的,並且工作正常。

回答

1

拼寫錯誤「String」。在您的代碼中,它表示string,但在錯誤中表示String

+0

編譯器不會將它識別爲std :: string,因此它會輸出String。代碼中拼寫正確 – Joshua 2013-04-27 23:06:36

+0

@Joshua:請在文件'Chrono.cpp'中向我們展示* literal *行17。 – 2013-04-27 23:32:21