回 帖 发 新 帖 刷新版面

主题:这个错误是什么

#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class Date
{
    int year,month,day;
public:
    void set(int y,int m,int d);
    void set(string &s);
    bool isLeapYear();
    void print();
};//--------------------------------------------
void Date::set(int y,int m, int d)
{
    year=y;month=m;day=d;
}//-----------------------------------------------
void Date::set(string &s)
{
    year=atoi(s.substr(0,4).c_str ());
    month=atoi(s.substr(5,2).c_str());
    day=atoi(s.substr(8,2).c_str());
}//-------------------------------------------------
bool Date::isLeapYear()
{
    return(year%4==0&&year%100!=0||(year%400==0));
}//----------------------------------------------------
void Date::print()
{
    cout<<setfill('0');
    cout<<setw(4)<<year<<'-'<<setw(2)<<month<<'-'<<setw(2)<<day<<'\n';
    cout<<setfill(' ');

}//------------------------------------------------------------

int _tmain(int argc, _TCHAR* argv[])
{
    Date d,e;
    d.set(2000,12,6);
    e.set("2005-05-05");
    if(d.isLeapYear())
        d.print();
    return 0;
}
 



error C2664: 'void Date::set(std::string &)' : cannot convert parameter 1 from 'const char [11]' to 'std::string &'

回复列表 (共3个回复)

沙发

e.set("2005-05-05");
换成
string year("2005-05-05");
Date d, e;
...
e.set(year);
...

板凳

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

3 楼

int main()
{
    Date d,e;
    d.set(2000,12,6);
    e.set((string)("2005-05-05"));
    if(d.isLeapYear())
        d.print();
    return 0;
}

改成这样子

我来回复

您尚未登录,请登录后再回复。点此登录或注册