程序不能运行,怎么回事?
#include<iostream>#include<string>
struct free_throws
{
std::string name;
int made;
int attempts;
float percent;
};
void display(const free_throws & ft);
void set_pc(free_throws & ft);
free_throws & accumulate(free_throws & target, const free_throws & source);
int main()
{
free_throws one = {"Ifelsa Branch",13,14};
free_throws two = {"Andor Knott",10,16};
free_throws three ={"Minnie Max ",7,9};
free_throws four ={"Whily Looper",5,9};
free_throws five ={"Long Long",6,14};
free_throws team ={"Throwgoods",0,0};
free_throws dup;
set_pc(one);
display(one);
accumulate(team,one);
display(team);
display(accumulate(team,two));
accumulate(accumulate(team,three),four);
display(team);
dup = accumulate(team,five);
std::cout<<"Displaying team:\n";
display(team);
std::cout<<"Displaying dup after assignment:\n";
display(dup);
set_pc(four);
accumulate(dup,five) = four;
std::cout<<"Displaying dup after ill-advised assignment:\n";
display(dup);
return 0;
}
void display(const free_throws & ft)
{
using std::cout;
cout<<"Name: "<<ft.name<<'\n';
cout<< " Made: "<<ft.made<<'\t';
cout<< "Attempts: "<<ft.attempts<<'\t';
cout<<"Percent: "<<ft.percent<<'\n';
}
void set_pc(free_throws & ft)
{
if(ft.attempts != 0)
ft.percent = 100.0f *float(ft.made)/float(ft.attempts);
else
ft.percent = 0;
}
free_throws & accumulate(free_throws & target,const free_throws & source)
{
target.attempts += source.attempts;
target.made += source.made;
set_pc(target);
return target;
}
错误信息如下
--------------------Configuration: c3 - Win32 Debug--------------------
Compiling...
c3.cpp
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(15) : error C2552: 'one' : non-aggregates cannot be initialized with initializer list
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(16) : error C2552: 'two' : non-aggregates cannot be initialized with initializer list
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(17) : error C2552: 'three' : non-aggregates cannot be initialized with initializer list
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(18) : error C2552: 'four' : non-aggregates cannot be initialized with initializer list
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(19) : error C2552: 'five' : non-aggregates cannot be initialized with initializer list
G:\Microsoft Visual Studio\MyProjects\c3\c3.cpp(20) : error C2552: 'team' : non-aggregates cannot be initialized with initializer list
执行 cl.exe 时出错.
c3.obj - 1 error(s), 0 warning(s)