无法在初始化时将"日期"转换为"int"作为错误

Can't convert 'Date' to 'int' in initialization as error

本文关键字:转换 int 错误 日期 初始化      更新时间:2023-10-16

我正在尝试默认复制,但收到了以下错误:

[Error]无法在初始化中将"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;   
}
Date d2{d1};

统一初始化仅在C++11及更高版本中可用,而且编译器似乎默认使用C++03。将-std=c++11标志添加到编译中(或更新编译器,GCC默认从GCC 6.1开始使用C++14进行编译(

最终,您可以使用不同形式的初始化:

Date d2(d1);
Date d2 = d1;