读书人

构造体初始化求别喷

发布时间: 2013-09-28 10:01:20 作者: rapoo

结构体初始化,求别喷
#include <iostream>
#include <cstring>
#include <string>

using namespace std;

struct CandyBar
{
string name;
double mg;
int calorie;
};

int main()
{
CandyBar snack=
{
"Mocha Munch",
2.3,
350
};

cout<<snack.name<<endl
<<snack.mg<<endl
<<snack.calorie<<endl;

return 0;
}
之后编译器报错
F:\MSDev98\MyProjects\Main\Main.cpp(17) : error C2552: 'snack' : non-aggregates cannot be initialized with initializer list
[解决办法]
楼主,珍惜生命,远离Vc6这个垃圾货
[解决办法]
我在Visual Studio下的代码:

#include <iostream>
//#include <cstring>
#include <string>
using namespace std;

struct CandyBar
{
string name;
double mg;
int calorie;
};

int main()
{
struct CandyBar snack ={"Mocha Munch", 2.3, 350};

cout<<snack.name<<endl;
cout<<snack.mg<<endl;
cout<<snack.calorie<<endl;

return 0;
}


运行正确!
[解决办法]
你要说你是喜欢c++,建议用以下方式,准没错
#include <iostream>
#include <cstring>
#include <string>

using namespace std;

struct CandyBar
{
string name;
double mg;
int calorie;
CandyBar(string _name,double _mg,int _calorie):name(_name),mg(_mg),_calorie(_calorie)
{

}
};

int main()
{
CandyBar snack("Mocha Munch",2.3,350);

cout<<snack.name<<endl
<<snack.mg<<endl
<<snack.calorie<<endl;

return 0;
}
[解决办法]
告别旧版本编译器吧,很多新特性都不支持了,都不符合与时俱进的号召
[解决办法]
很多在VC6上编译不过的代码,却能在VS08/10/12上跑,这应该就是楼上说的问题吧,尽早换个工具吧。预先善其事,必先利其器啊
[解决办法]
用了VC6,就表示你与64位开发无缘了。。

读书人网 >C++

热点推荐