cannot convert parameter 1 from 'int' to 'int &' A reference that is not to 'const' cannot be bound
代码如下:a.h文件externintp_abs(int&a);externintp_max(int&a,int&b);classa{public:a():x(0),y(...
代码如下:
a.h文件
extern int p_abs(int &a);
extern int p_max(int &a,int &b);
class a{
public:
a():x(0),y(0){}
a(const int &i,const int &j):x(i),y(j){}
int get_x(){
return x;
};
int get_y(){
return y;
};
void set_x(const int &i){
x=i;
};
void set_y(const int &i){
y=i;
};
void printa()
{
std::cout<<"x is "<<get_x()<<"\ty is "<<get_y()<<std::endl;
};
int get_max(){
/*
int p1=p_abs(x),p2=abs(y);
return p_max(p1,p2);
*/
return p_max(p_abs(x),p_abs(y));
};
private:
int x;
protected:
int y;
};
cpp1.cpp:
#include<iostream>
#include"a.h"
using namespace std;
int main(){
a a1,a2(4,5);
a *ap=0;
ap=&a1;
ap->printa();
cout<<ap->get_max()<<endl;
return 0;
}
cpp2.cpp:
int p_abs(int &a){
return a>0?a:-a;
};
int p_max(int &a,int &b){
return a>b?a:b;
};
问题如下:
在类a的public成员函数get_max()中上述代码通不过,报错已经给出“cannot convert parameter 1 from 'int' to 'int &' A reference that is not to 'const' cannot be bound” ,但使用被我注释的那段却可以通过,请高手指点下迷津,我想知道下原理。
阐述下我本来的想法是在a中新设个private :int z.
然后在a的构造函数的初始列表中初始化z,使z取x与y各自绝对值最大数,
跟上述情况一样,发现在类中嵌套使用上述p_max与p_abs通不过编译,希望能指点下迷津。 展开
a.h文件
extern int p_abs(int &a);
extern int p_max(int &a,int &b);
class a{
public:
a():x(0),y(0){}
a(const int &i,const int &j):x(i),y(j){}
int get_x(){
return x;
};
int get_y(){
return y;
};
void set_x(const int &i){
x=i;
};
void set_y(const int &i){
y=i;
};
void printa()
{
std::cout<<"x is "<<get_x()<<"\ty is "<<get_y()<<std::endl;
};
int get_max(){
/*
int p1=p_abs(x),p2=abs(y);
return p_max(p1,p2);
*/
return p_max(p_abs(x),p_abs(y));
};
private:
int x;
protected:
int y;
};
cpp1.cpp:
#include<iostream>
#include"a.h"
using namespace std;
int main(){
a a1,a2(4,5);
a *ap=0;
ap=&a1;
ap->printa();
cout<<ap->get_max()<<endl;
return 0;
}
cpp2.cpp:
int p_abs(int &a){
return a>0?a:-a;
};
int p_max(int &a,int &b){
return a>b?a:b;
};
问题如下:
在类a的public成员函数get_max()中上述代码通不过,报错已经给出“cannot convert parameter 1 from 'int' to 'int &' A reference that is not to 'const' cannot be bound” ,但使用被我注释的那段却可以通过,请高手指点下迷津,我想知道下原理。
阐述下我本来的想法是在a中新设个private :int z.
然后在a的构造函数的初始列表中初始化z,使z取x与y各自绝对值最大数,
跟上述情况一样,发现在类中嵌套使用上述p_max与p_abs通不过编译,希望能指点下迷津。 展开
2个回答
展开全部
h[i]=sum(e1[i].hperday[m]); //就是这里出错,不知道错在哪??
//============================================================
double sum(double a[m]){ //主函数调用这个函数的时候就会出现以上的错误
//============================================================
虽然只有15分~但是帮你解决下。你在函数声明的时候你的形参double类型的数组a[m]?但是你为什么传实参的时候传入e1[i].hperday[m],而e1[i].hperday[m]不是一个数组 而是“一个具体的double类型的值”?double类型的数组哪能对应一个具体的double类型的值?显然逻辑错误!请你好好改正!
//=============================================================
祝你顺利解决,我是zengraoli。
//=============================================================
对你追加提问的回答:
错不错在你结构体定义的数组里面?明白?
是错在你传参数进去的时候,给定的是一个确定的值,
要传入数组你可以这么来传“e1[i].hperday”?明白?
我这里没编程工具,无法帮你完全修改,希望你能自己修改过来。
看了看,发现你说的这里//初始化函数,这个检查过了,没有错误
定义的时候需要返回一个employee initialize(employee e1)但是你后面却没有return。好好修改一下,部分还是有小小的错误的。
.
希望能够帮助你 ^_^ 也希望能够选为最佳答案!
//============================================================
double sum(double a[m]){ //主函数调用这个函数的时候就会出现以上的错误
//============================================================
虽然只有15分~但是帮你解决下。你在函数声明的时候你的形参double类型的数组a[m]?但是你为什么传实参的时候传入e1[i].hperday[m],而e1[i].hperday[m]不是一个数组 而是“一个具体的double类型的值”?double类型的数组哪能对应一个具体的double类型的值?显然逻辑错误!请你好好改正!
//=============================================================
祝你顺利解决,我是zengraoli。
//=============================================================
对你追加提问的回答:
错不错在你结构体定义的数组里面?明白?
是错在你传参数进去的时候,给定的是一个确定的值,
要传入数组你可以这么来传“e1[i].hperday”?明白?
我这里没编程工具,无法帮你完全修改,希望你能自己修改过来。
看了看,发现你说的这里//初始化函数,这个检查过了,没有错误
定义的时候需要返回一个employee initialize(employee e1)但是你后面却没有return。好好修改一下,部分还是有小小的错误的。
.
希望能够帮助你 ^_^ 也希望能够选为最佳答案!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询