
c++我在调试时出现这样的问题。。怎么解决?是什么问题?
m:\late\late.cpp(36):errorC2446:'==':noconversionfrom'constint'to'int(__thiscallasd::...
m:\late\late.cpp(36) : error C2446: '==' : no conversion from 'const int' to 'int (__thiscall asd::*)(double,double,double)'
There are no conversions from integral values to pointer-to-member values
m:\late\late.cpp(36) : error C2040: '==' : 'int (__thiscall asd::*)(double,double,double)' differs in levels of indirection from 'const int'
m:\late\late.cpp(42) : error C2143: syntax error : missing ';' before '{'
Error executing cl.exe.
late.obj - 3 error(s), 0 warning(s)
求大侠详解和指导
#include<iostream>
#include<cmath>
using namespace std;
class asd{
private:
double A,B,C;
public:
int setABC(double a,double b,double c) //判断三格数值是否符合一个三角形
{
int p;
if((a+b)>c&&(a+c)>b&&(b+c)>a)
p=1;
else
p=0;
return p;
}
int getarea(double a,double b,double c) //求面积
{
int area=0;
int p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
}
int getperimeter(double a,double b,double c) //求周长
{int s=a+b+c;
return s;
}
asd(double A=0,double B=0,double C=0)
{
this->A=A,this->B=B,this->C=C;
}
};
void main()
{
asd q(6,2,11);
if(q.setABC==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n';
}
else(q.setABC==0)
{
cout<<"error"<<endl;
}
} 展开
There are no conversions from integral values to pointer-to-member values
m:\late\late.cpp(36) : error C2040: '==' : 'int (__thiscall asd::*)(double,double,double)' differs in levels of indirection from 'const int'
m:\late\late.cpp(42) : error C2143: syntax error : missing ';' before '{'
Error executing cl.exe.
late.obj - 3 error(s), 0 warning(s)
求大侠详解和指导
#include<iostream>
#include<cmath>
using namespace std;
class asd{
private:
double A,B,C;
public:
int setABC(double a,double b,double c) //判断三格数值是否符合一个三角形
{
int p;
if((a+b)>c&&(a+c)>b&&(b+c)>a)
p=1;
else
p=0;
return p;
}
int getarea(double a,double b,double c) //求面积
{
int area=0;
int p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
}
int getperimeter(double a,double b,double c) //求周长
{int s=a+b+c;
return s;
}
asd(double A=0,double B=0,double C=0)
{
this->A=A,this->B=B,this->C=C;
}
};
void main()
{
asd q(6,2,11);
if(q.setABC==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n';
}
else(q.setABC==0)
{
cout<<"error"<<endl;
}
} 展开
4个回答
展开全部
调用函数要用括号,而且调用语句不能放在=左边。
else的后面也不能直接加条件语句
asd q;
int a=q.setABC(6,2,11);
if(a==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n';
}
else
{
cout<<"error"<<endl;
}
else的后面也不能直接加条件语句
asd q;
int a=q.setABC(6,2,11);
if(a==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n';
}
else
{
cout<<"error"<<endl;
}
追问
楼上的答案不行。。。
追答
试试
asd q(6,2,11);
int a=q.setABC(6,2,11);
if(a==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n';
}
else
{
cout<<"error"<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<cmath>
using namespace std;
class asd{
private:
double A,B,C;
public:
int setABC(double a,double b,double c)
{
int p;
if((a+b)>c&&(a+c)>b&&(b+c)>a)
p=1;
else
p=0;
return p;
}
int getarea(double a,double b,double c)
{
int area=0;
int p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
}
int getperimeter(double a,double b,double c)
{int s=a+b+c;
return s;
}
asd(double A=0,double B=0,double C=0)
{
this->A=A,this->B=B,this->C=C;
}
};
void main()
{
asd q;
if(q.setABC(6,2,11)==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n'<<endl;
}
else
if(q.setABC(6,2,11)==0)
{
cout<<"error"<<endl;
}
}
类的初始化不对,
q (6,2,11)这算神马?
q.A=6
q.B=2
q.C=11
else的用法不对
如果else之后要加判断就必须加上一个if来做判断
还有就是编程最好养成好的习惯
变量名函数名尽量起有意义的
中间做些有意义的注释
都不知道你的程序是想做什么
#include<cmath>
using namespace std;
class asd{
private:
double A,B,C;
public:
int setABC(double a,double b,double c)
{
int p;
if((a+b)>c&&(a+c)>b&&(b+c)>a)
p=1;
else
p=0;
return p;
}
int getarea(double a,double b,double c)
{
int area=0;
int p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
return area;
}
int getperimeter(double a,double b,double c)
{int s=a+b+c;
return s;
}
asd(double A=0,double B=0,double C=0)
{
this->A=A,this->B=B,this->C=C;
}
};
void main()
{
asd q;
if(q.setABC(6,2,11)==1)
{
cout<<"area="<<q.getarea<<'\n';
cout<<"perimeter="<<q.getperimeter<<'\n'<<endl;
}
else
if(q.setABC(6,2,11)==0)
{
cout<<"error"<<endl;
}
}
类的初始化不对,
q (6,2,11)这算神马?
q.A=6
q.B=2
q.C=11
else的用法不对
如果else之后要加判断就必须加上一个if来做判断
还有就是编程最好养成好的习惯
变量名函数名尽量起有意义的
中间做些有意义的注释
都不知道你的程序是想做什么
追问
好的。我是初学者,我会记着了
编写一个三角形类Ctriangle,有A、B、C三条边(double类型),给出SetABC(double a,double b,double c)函数设置三条边长度。提供计算面积的函数double GetArea()以及计算周长的函数double GetPerimeter(),并提供main函数进行测试。
我只是把Ctriangle改了asd。。
追答
开始就把基础打好,否则后面总是会复习,而且当你的程序足够复杂的时候你就发现即使变量都有意义,你还是看的一塌糊涂,还是要花些时间看明白程序的逻辑,学程序踏实很重要,
手边有本c/C++的书不记得不懂了就翻翻······
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说实在的,真看不懂,程序还是好好学习吧。
setABC不知道做什么用的,变量名大写小写都有,文件名类名随便取,习惯太差。
写程序规规矩矩才有可能学会,这种自己不认真的很难让人给你认真看。
setABC不知道做什么用的,变量名大写小写都有,文件名类名随便取,习惯太差。
写程序规规矩矩才有可能学会,这种自己不认真的很难让人给你认真看。
更多追问追答
追问
3.编写一个三角形类Ctriangle,有A、B、C三条边(double类型),给出SetABC(double a,double b,double c)函数设置三条边长度。提供计算面积的函数double GetArea()以及计算周长的函数double GetPerimeter(),并提供main函数进行测试。
我只是把Ctriangle改了asd。。
追答
可是你的SetABC,干什么用的呢?
A=a;
B=b;
C=c;
才是SetABC中最重要的,至于是不是三角形都是次要的。
不给你改就是因为以后你要明白需求是最重要的,程序做什么最重要,而不是怎么写,怎么运行。判作业很多年,这样的程序一般都不看。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的函数参数未给 声明是未给初值
追问
- -||完全看不懂。。求解释。。原谅我初学者的水平
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询