| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7830 人关注过本帖
标题:cannot convert from 'const char' to 'char [30]'怎么办?
只看楼主 加入收藏
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
收藏
 问题点数:0 回复次数:4 
cannot convert from 'const char' to 'char [30]'怎么办?
/*CandyBar结构包含3个成员.第一个成员存储candy bar的品牌名称;第二个成员存储

candy bar的重量(可能有小数);第三个成员存储candy bar的热量(整数).请编写一个

程序,它使用一个这样的函数,即将CandyBar的引用,char指针,double和int作为参数,

并用最后3个值设置相应的结构成员.最后3个参数的默认值分别为"Millennium

Munch",2.85和350.另外,该程序还包含一个以CandyBar的引用为参数,并显示结构内容

的函数.请尽量使用const. */
#include <iostream>
struct CandyBar
{
char brand[30];
double weight;
int calorie;
};
void setCandyBar(CandyBar &candy,char *ctr="Millennium Munch",double weight=2.85,int calorie=350);
void showCandyBar(CandyBar &candy);
int main()
{
using namespace std;
CandyBar candy1;
CandyBar &can2=candy1;
setCandyBar(can2);
setCandyBar(candy1,"大白兔",3.0,248);
showCandyBar(candy1);
return 0;
}
void setCandyBar(CandyBar &candy,char const *ctr/* ="Millennium Munch" */,double weight/* =2.85 */,int calorie/* =350 */)
{
using namespace std;
candy.brand=*ctr;
candy.weight=weight;
candy.calorie=calorie;
}
void showCandyBar(CandyBar &candy)
{
using namespace std;
cout<<"The name is "<<candy.brand<<endl;
cout<<"The weight is "<<candy.weight<<endl;
cout<<"The calorie is "<<candy.calorie<<endl;
}
编译时说error C2440: '=' : cannot convert from 'const char' to 'char [30]'
怎么改呢,不懂。
搜索更多相关主题的帖子: convert cannot char const 
2007-08-13 15:33
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
收藏
得分:0 
candy.brand=*ctr; //*ctr 是一个字符怎么可能赋给candy.brand ??
指针到字符数组的赋值用 strcpy() 或者 strcpy_s()
strcpy(candy.brand, ctr);
strcpy(candy,brand, 30, ctr);

try new catch
2007-08-13 16:52
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
收藏
得分:0 
改正以后,编译通过,但是执行的时候出现这样的错误:
unresolved external symbol "void __cdecl setCandyBar(struct CandyBar &,char *,double,int)" (?setCandyBar@@YAXAAUCandyBar@@PADNH@Z)
是什么意思呢?
2007-08-13 17:07
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用heyyroup在2007-8-13 17:07:19的发言:
改正以后,编译通过,但是执行的时候出现这样的错误:
unresolved external symbol "void __cdecl setCandyBar(struct CandyBar &,char *,double,int)" (?setCandyBar@@YAXAAUCandyBar@@PADNH@Z)
是什么意思呢?

真的通过了???
你检查下你的函数声明和定义的参数是否一样!


Fight  to win  or  die...
2007-08-13 17:48
heyyroup
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-6-14
收藏
得分:0 

谢谢,知道错在哪里呢。我在函数的定义里面多了一个const。
多谢各位的帮助。
再问一个问题。这个题中要求用const,那哪些地方用const 比较好呢,我发现这个很难弄啊。编译老是出错

2007-08-13 18:37
快速回复:cannot convert from 'const char' to 'char [30]'怎么办?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030312 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved