2014-03-12 51 views
0

對不起,我在編程上很糟糕,需要幫助,所以我可以繼續我的其他任務。 這是我下面的程序:我的參數化構造函數說我的字符串變量是不確定的?

#include<iostream> 
#include"date.h" 
#include<string> 

using namespace std; 

int main() 
{ 
    //string thurs; 
    Date myDate(thurs,12,2014); 
    cout<<"Day is: "<<myDate.getDay()<<endl; 
    cout<<"month is: "<<myDate.getMonth()<<endl; 
    cout<<"month is: "<<myDate.getYear()<<endl; 
} 

哪裏是說:「週四」它說,這是未申報的,我想聲明,但它仍然沒有解決我的問題,它爲什麼我評論一下。

這是我的課,林不知道,如果是這樣的問題:

#include<iostream> 

using namespace std; 

class Date 
{ 
    private: 
     string day; 
     int month; 
     int year; 

    public: 
     Date(string day,int month,int year); //Param Constructor 
     void setDay(string); 
     void setMonth(int); 
     void setYear(int); 
     string getDay(); 
     int getMonth(); 
     int getYear(); 
}; 

最後我塞特斯/吸氣劑,不知道這可能是問題:

#include"date.h" 

Date::Date(string day,int month, int year) 
{ 
    this->day=day; 
    this->month=month; 
    this->year=year; 
} 

//getters 
string Date::getDay() 
{ 
    return day; 
} 

int Date::getMonth() 
{ 
    return month; 
} 

int Date::getYear() 
{ 
    return year; 
} 


//Setters 
void Date::setDay(string d) 
{ 
    day=d; 
} 

void Date::setMonth(int m) 
{ 
    month=m; 
} 

void Date::setYear(int y) 
{ 
    year=y; 
} 

在它顯示除了「thurs」以外的所有內容 - 任何幫助和可怕佈局的抱歉>。 <

+2

'thurs'而不是''thurs'''? –

回答

1

嘗試

Date myDate("thurs",12,2014); 

注意,括號使這裏所有的差異 - 從一個變量名週四改變爲一個字符串。

+0

它工作!對不起,這個愚蠢的問題 - 謝謝= = – user3411020

0

你需要像這樣定義string thurs("literal");

+1

他已經'使用命名空間標準;'和變量''是一個常量 –

+0

我只是指出它是如何工作的:) – hrkz

+0

這實際上不是他的問題。 – Mauren

0

線 字符串變量
Date myDate(thurs,12,2014); 

應改爲

Date myDate("thurs",12,2014); 

祝你好運!

4

在C++中,字符串必須使用雙引號"被封閉,所以你可以做:

// Note "thurs" instead of thurs 
Date myDate("thurs", 12, 2014); 

或者,你可以這樣做:

string thurs = "thurs";   // Initialize a std::string with string literal "thurs" 
Date myDate(thurs, 12, 2014); // Pass std::string instance 

補充說明時,你想傳遞不便宜的參數(例如不是int,但是像string你wa NT做一個本地副本,可以考慮按價值計算,std::move()從價值傳遞,例如:

Date::Date(string d, int m, int y) 
     : day(std::move(d)) 
     , month(m) 
     , year(y) 
{ } 

void Date::setDay(string d) 
{ 
    day = std::move(d); 
} 

還要注意的是,由於吸氣不修改的Date內部狀態,您可能希望將它們標記as const

string Date::getDay() const 
{ 
    return day; 
} 

int Date::getMonth() const 
{ 
    return month; 
} 

int Date::getYear() const 
{ 
    return year; 
} 
相關問題