扩展初始值设定项列表仅适用于

2024-03-29

我对 C++ 很陌生,我在阅读错误时遇到了困难,我能够消除其中的大部分错误,但我只剩下一些错误,我请求对它们的帮助。

这是程序

#include <string>
#include <iostream>
using namespace std;
int main(){
 int *bN = new int[9];
 string bankNum;
 int *number = new int[9];
 int total, remain;
 int *multi = new int{7,3,9,7,3,9,7,3};
 cout<<"Please enter the bank number located at the bottom of the check"<<endl;
 cin>>bankNum;
 for(int i = 0; i < 8; i++){
  bN[i]= (bankNum[i]-48);
 }
 for(int i = 0; i < 8;i++){
  cout<<bN[i];
 }
 cout<<endl;
 for(int i = 0; i < 8;i++){
  cout<<multi[i];
 }
 cout<<endl;
 for(int i = 0; i < 8;i++){
  bN[i] = bN[i] * multi[i];
  cout<< bN[i];
 }
 cout<<endl;
 for(int i = 0; i < 8;i++){
  total += bN[i]
  cout<<total;
 }
 cout<<endl;
 remain = total % 10;
 if(remain == (bankNum[9] - 48)){
  cout<<"The Number is valad"<<endl;
  cout<<remain<<endl;
 }
}

和错误

wm018@cs:~$ c++ bankNum.cpp
bankNum.cpp: In function âint main()â:
bankNum.cpp:9:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
bankNum.cpp:9:38: error: cannot convert â<brace-enclosed initializer list>â to âintâ in initialization
bankNum.cpp:30:3: error: expected â;â before âcoutâ

这种初始化方式,使用大括号:

int *multi = new int{7,3,9,7,3,9,7,3};

该语言于 2011 年引入。较旧的编译器不支持它;一些较新的人(比如你的)只有在你告诉他们的情况下才会支持;对于你的编译器:

c++ -std=c++0x bankNum.cpp

但是,这种形式的初始化对于使用以下命令创建的数组仍然无效new。由于它很小并且仅在本地使用,因此您可以声明一个本地数组;这不需要 C++11 支持:

int multi[] = {7,3,9,7,3,9,7,3};

这还有修复内存泄漏的优点 - 如果您使用new分配内存,那么你应该释放它delete当你完成它时。

如果您确实需要动态分配,您应该使用std::vector为您分配和释放内存:

std::vector<int> multi {7,3,9,7,3,9,7,3};

请注意,您的 GCC 版本相当旧,并且对 C++11 的支持不完整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展初始值设定项列表仅适用于 的相关文章

随机推荐