关于c++错误

来源:百度知道 编辑:UC知道 时间:2024/06/19 15:23:03
#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include "cmath"
using namespace std;

class Trig
{
private:
double x,y,z;
double area();
public:
Trig(int ,int ,int);
int istrig();
friend double Addtrig (class Trig &,class Trig &);
};

double Trig::area()
{
double d=(x+y+z)/2;
return sqrt(d*(d-x)*(d-y)*(d-z));
}

Trig::Trig(int a,int b,int c):x(a),y(b),z(c){}

int Trig::istrig()
{
if(x+y>z&&x+z>y&&y+z>x)
return (1);
else
return 0;
}

double Addtrig(class Trig &a,class Trig &b)
{
return a.area()+b.area();
}

int main()
{
double m,n,p;
do
{
cout<<"input the three:"<<endl;
cin>>m>>n>>p;
Trig a(m,n,p);
}while(!a.istrig());
do

作用域没弄明白吧:)
Trig x(m,n,p);只在do的{}里有效,出来了就无效了,所以说没定义。
要想在最后用的话,可以在Trig里面添加一个set(int,int,int)函数,然后a跟b的定义移到最前面,最外边。