valarray的初始化问题

IT保安 2014-09-02 06:46:37

Student(const char * str, const double * pd,int n):name(str),scores(pd,n){} //这是构造函数

//初始化
valarray<double>a(90,19); //正常运行
Student no1("tom",90,19); //出错



Student类包含一个valarray对象,在类中已经typedef valarray<double> scores,
但是我在main中给student对象初始化,总是提示错误: 不能将参数 2 从“int”转换为“const double *”

我就在初始化上面写了个正常的valarray初始化,结果OK的,这就是我搞不懂的地方了,为什么错了?
都是用的valarray的构造函数啊,参数都一致!

在构造函数里,将double * pd 改成用引用或者按值传递就没问题了,这些都不太懂,求解!
...全文
245 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
const double* pd 指的是一个double数组的头指针,其实写成const double pd[]会更直观; 你应该这样初始化一个数组:const double arr[5] = {1,2,3,4,5}; 然后:Student no1("tom",arr,5);
IT保安 2014-09-02
  • 打赏
  • 举报
回复
2楼的方法,我试过了,在输出的时候只有第一个数据是正确的,其他数据都是内存中的乱七八糟的数

神奕 2014-09-02
  • 打赏
  • 举报
回复
字符串字面量是一段双引号括起来的多字节字符序列,由于字符串字面量具有静态存储连续性数组类型,并且在表达式中它会根据数组到指针的隐式转换规则转换为一个指向数组首元素地址的指针,所以实参"tom"可以赋给char * (字符指针)。 但是数值字面值却不能转换为对应类型的指针,例如:

const double* pd = 90; // 报错
你可以先声明一个变量,然后取址就可以了:

double a = 90;
Student no1("tom",&a,19);

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧