在 C++98 中,'dvd1' 必须由构造函数初始化,而不是由 '{...}' 初始化
In C++98 'dvd1' must be initialized by constructor, not by '{...}'
如何初始化 dvd1?
C:UsersSuperUserGoogle Drive>g++ -o a Question1.cpp
问题 1.cpp:在函数 'int main((' 中:
问题 1.cpp:39:76:错误:在 C++98 中,"dvd1"必须由构造函数初始化,而不是由"{...}"初始化
dvd dvd1 = {"僵尸","BBC","詹姆斯","英语","Alw",2012,20170601,20170630};
#include <iostream>
#include <string>
using namespace std;
class dvd
{
string movieName,movieProdComp,movieLeadActor,movieLanguage,renterName;
int releaseYear,rentDate,returnDate;
public:
dvd(string mn,string mpc,string mla,string ml, string rn,int ry,int rd,int retd);
void print();
};
dvd::dvd(string mn,string mpc,string mla,string ml, string rn, int ry,int rd,int retd){
movieName=mn;
movieProdComp=mpc;
movieLeadActor=mla;
movieLanguage=ml;
renterName=rn;
releaseYear=ry;
rentDate=rd;
returnDate=retd;
}
void dvd::print(){
cout<<"Movie:"<<movieName<<endl;
cout<<"Production:"<<movieProdComp<<endl;
cout<<"Starring:"<<movieLeadActor<<endl;
cout<<"Language:"<<movieLanguage<<endl;
cout<<"Rented By:"<<renterName<<endl;
cout<<"Released:"<<releaseYear<<endl;
cout<<"Rent Date:"<<rentDate<<endl;
cout<<"Return Date:"<<returnDate<<endl;
}
int main(){
dvd();
dvd dvd1 = {"Zombie","BBC","James","English","Alw",2012,20170601,20170630};
dvd1.print();
}
这称为列表初始化,对于非聚合类型,仅在 C++11 中受支持:
dvd dvd1 = {"Zombie","BBC","James","English","Alw",2012,20170601,20170630};
对于 C++98,您可能希望稍微更改它,像往常一样调用构造函数:
dvd dvd1("Zombie","BBC","James","English","Alw",2012,20170601,20170630);
>dvd
是一种非聚合类型,在支持列表初始化的 C++11 之前无法使用支持初始化的初始化器进行初始化。(更准确地说,您要做的是复制列表初始化。
对于 C++98,您可以写
dvd dvd1 ("Zombie","BBC","James","English","Alw",2012,20170601,20170630);
dvd dvd1 = dvd("Zombie","BBC","James","English","Alw",2012,20170601,20170630);
在 C++98 中,只有当聚合类型是聚合类型时,才能像dvd dvd1 = {...};
一样使用聚合初始化;在这种情况下,dvd
具有用户定义的构造函数
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 在 C++98 中,'dvd1' 必须由构造函数初始化,而不是由 '{...}' 初始化
- 容器初始化在 C++98 中
- = NULL,在 c++98 中初始化非静态数据成员
- 在 C++98 中初始化结构数组的优雅方法
- C 98如何在标题中初始化静态结构阵列
- 有没有办法检查地图是否已在 C++98 中初始化
- C 98中整数集列表的初始化
- C++98 大括号常量标量初始化
- 值初始化是 C++98 标准的一部分吗?如果不是,为什么在 C++03 标准中添加它
- 我们需要一个可访问的复制构造函数来初始化C++98/03中的值吗
- 在C++(98、11和14)中初始化静态数据成员的正确方法是什么