首页 > 解决方案 > 初始化时无法将“日期”转换为“int”作为错误

问题描述

我正在尝试默认复制,但出现此错误:

[错误] 无法在初始化中将 '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;   
}

标签: c++class

解决方案


Date d2{d1};

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

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

Date d2(d1);
Date d2 = d1;

推荐阅读