我正在尝试默认复制,但出现此错误:
[错误]在初始化时无法将'Date'转换为'int' [警告]扩展的初始化程序列表仅适用于-std = c ++ 11或-std = gnu ++ 11
//默认复制
#include<iostream>
class Date{
public:
int day;
int month;
int year;
void setday(int );
void setmonth(int);
void setyear(int);
};
void Date::setday(int d){
day=d;}
void Date::setmonth(int m){
month=m;
}
void Date::setyear(int y){
year=y;
}
int main(){
Date d1;
d1.setday(5);
d1.setmonth(6);
d1.setyear(7);
std::cout<<d1.day<<d1.month<<d1.year;
Date d2{d1};
std::cout<<d2.day<<d2.month<<d2.year;
return 0;
}
答案 0 :(得分:2)
Date d2{d1};
统一初始化仅在C ++ 11及更高版本中可用,并且看来您的编译器默认情况下使用C ++ 03。在您的编译中添加-std=c++11
标志(或更新您的编译器,默认情况下,GCC从GCC 6.1开始使用C ++ 14编译)
最终,您可以使用不同形式的初始化:
Date d2(d1);
Date d2 = d1;