注册 登录
编程论坛 C++教室

[求助]怎么错呢?

dengtc 发布于 2007-05-24 16:31, 897 次点击
我用的是VC++2005
#include <iostream>
#include <string>
using namespace std;
struct inflatable
{
string name;
float yolume;
double price;
}bouquet,choice=
{
?{"sumflowers",0.20,12.49}
};
int main()
{
cout<<"boyquet: "<<bouquet.name<<" foe $"<<bouquet.price<<endl;
cout<<"choice: "<<choice.name<<" for $"<<choice.price<<endl;
return 0;
}

误 1 error C2552: “inflatable::name”:
不能用初始值设定项列表初始化非聚合 e:\microsoft visual studio 2005
简体中文专业版\vc++2005\项目\4.12\4.12\assgn_st.cpp 11

请各位大哥帮帮忙!!
顺便问一句结构中的位字段能给我说得详细些吗?我看不懂书上上所说的内容!!谢谢!!
我用的是《C++primer plus中文第五版》

[此贴子已经被作者于2007-5-24 16:49:45编辑过]

10 回复
#2
wfpb2007-05-24 16:53
choice={"sumflowers",0.20,12.49};这样才是正确的初始.你多了对大括号!

[此贴子已经被作者于2007-5-24 16:53:38编辑过]


#3
dengtc2007-05-24 17:17
wfpb是不是不能按上面的编辑啊?
struct inflatable
{
string name;
float yolume;
double price;
}bouquet,choice=
{
?{"sumflowers",0.20,12.49}
};
我是想让bouquet=choice上面的表示方法不对吗?
还是应该
struct inflatable
{
string name;
float yolume;
double price;
}bouquet=
{
?{"sumflowers",0.20,12.49}
};
int main()
{
cout<<"boyquet: "<<bouquet.name<<" foe $"<<bouquet.price<<endl;
bouquet=choice;
cout<<"choice: "<<choice.name<<" for $"<<choice.price<<endl;
return 0;
}
这样呢?
#4
kisscjy2007-05-24 17:18
第一个问题:楼上已经说了....

第二个问题:你把string name 改成char name[100]就可以了~~

至于为什么改成string 不成,我也不清楚

希望高手解答一下...拜托了...

[此贴子已经被作者于2007-5-24 17:23:09编辑过]

#5
kisscjy2007-05-24 17:27

若想让bouquet=choice,

则应该这样写inflatable bouquet=choice;

#6
dengtc2007-05-24 17:27
哦!
谢谢!wfpb,kisscjy!
#7
dengtc2007-05-24 17:37
为什么
inflatable bouquet=
{
"sumflowers",
0.20f,
12.49
};
就没有问题,而
inflatable bouquet=
{
{"sumflowers",0.20f,12.49}
};
就出来一个错误2个警告!

[此贴子已经被作者于2007-5-25 14:07:23编辑过]

#8
孤魂居士2007-05-25 20:15

老师说 警告 都没有什么大问题也不会影响运行结果
也许只是你的程序不规范什么的引起的``
#9
aipb20072007-05-25 20:58
以下是引用孤魂居士在2007-5-25 20:15:12的发言:

老师说 警告 都没有什么大问题也不会影响运行结果
也许只是你的程序不规范什么的引起的``

搞清楚每一个警告对你写程序很有帮助。增加了你的规范性,千万不要忽视!

#10
dengtc2007-05-25 22:21
呵呵!
谢谢aipb2007
#11
aipb20072007-05-25 23:03
以下是引用dengtc在2007-5-24 17:37:21的发言:
为什么
inflatable bouquet=

{

"sumflowers",

0.20f,

12.49

};
就没有问题,而
inflatable bouquet=
{
{"sumflowers",0.20f,12.49}
};
就出来一个错误2个警告!


花括号不能乱加的哦!可以把一组具有相似功能,或者完成某特定动能的代码用{}扩在一起,以增加代码的可理解性,清晰的表现逻辑关系.
这里给你警告我想是因为把花括号放在这里有二义性吧,因为就是个副值语句,加上多别扭!

1