C++中枚举类型的使用???
我怎样才能在函数:checkTriangleType中使用我定义的枚举类型啊??怎样写checkTriangleType的实现。不需要算法,只需要使用枚举类型的语法。谢谢...
我怎样才能在函数:checkTriangleType 中使用我定义的枚举类型啊??怎样写checkTriangleType的实现。不需要算法,只需要使用枚举类型的语法。
谢谢
template<class Type = int>
class lMath
{
public:
enum TRIANGLE_TYPE
{
TRIANGLE_ACUTE = 0, // 锐角三角形
TRIANGLE_RIGHT = TRIANGLE_ACUTE + 1, // 直角三角形
TRIANGLE_OBTUSE = TRIANGLE_RIGHT + 1, // 钝角三角形
};
// 检查一个三角形的类型
static TRIANGLE_TYPE checkTriangleType(Type _a, Type _b, Type _c);
}; 展开
谢谢
template<class Type = int>
class lMath
{
public:
enum TRIANGLE_TYPE
{
TRIANGLE_ACUTE = 0, // 锐角三角形
TRIANGLE_RIGHT = TRIANGLE_ACUTE + 1, // 直角三角形
TRIANGLE_OBTUSE = TRIANGLE_RIGHT + 1, // 钝角三角形
};
// 检查一个三角形的类型
static TRIANGLE_TYPE checkTriangleType(Type _a, Type _b, Type _c);
}; 展开
展开全部
template<class Type = int>
class lMath
{
public:
enum TRIANGLE_TYPE
{
TRIANGLE_ACUTE = 0, // 锐角三角形
TRIANGLE_RIGHT = TRIANGLE_ACUTE + 1, // 直角三角形
TRIANGLE_OBTUSE = TRIANGLE_RIGHT + 1, // 钝角三角形
};
// 检查一个三角形的类型
static TRIANGLE_TYPE checkTriangleType(Type _a, Type _b, Type _c){
if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a )
return TRIANGLE_RIGHT;//使用枚举类型常量
if(a*a+b*b>c*c && a*a+c*c>b*b || b*b+c*c>a*a)
return TRIANGLE_ACUTE;//使用枚举类型常量
return TRIANGLE_OBTUSE;//使用枚举类型常量
};
};
int main()
{
tepedef lMath<int> intMath; 如果不定义intMath类型,下面就直接使用 lMath<int> 替换 intMathintMath
int a,b,c;
scanf("%d,%d,%d",a,b,c);
intMath::TRIANGLE_TYPE //加作用域限定符,使用枚举类型
t=intMath::checkTriangleType(a,b,c); //加作用域限定符,使用类的静态方法
switch(t)
{
case intMath::TRIANGLE_ACUTE://加作用域限定符,使用枚举类型常量
printf("Acute Triangle");
break;
case intMath::TRIANGLE_RIGHT://加作用域限定符,使用枚举类型常量,不怕麻烦,加枚举名
printf("RT Triangle");
break;
default:
printf("Obtuse Triangle");
break;
}
return 0;
}
class lMath
{
public:
enum TRIANGLE_TYPE
{
TRIANGLE_ACUTE = 0, // 锐角三角形
TRIANGLE_RIGHT = TRIANGLE_ACUTE + 1, // 直角三角形
TRIANGLE_OBTUSE = TRIANGLE_RIGHT + 1, // 钝角三角形
};
// 检查一个三角形的类型
static TRIANGLE_TYPE checkTriangleType(Type _a, Type _b, Type _c){
if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a )
return TRIANGLE_RIGHT;//使用枚举类型常量
if(a*a+b*b>c*c && a*a+c*c>b*b || b*b+c*c>a*a)
return TRIANGLE_ACUTE;//使用枚举类型常量
return TRIANGLE_OBTUSE;//使用枚举类型常量
};
};
int main()
{
tepedef lMath<int> intMath; 如果不定义intMath类型,下面就直接使用 lMath<int> 替换 intMathintMath
int a,b,c;
scanf("%d,%d,%d",a,b,c);
intMath::TRIANGLE_TYPE //加作用域限定符,使用枚举类型
t=intMath::checkTriangleType(a,b,c); //加作用域限定符,使用类的静态方法
switch(t)
{
case intMath::TRIANGLE_ACUTE://加作用域限定符,使用枚举类型常量
printf("Acute Triangle");
break;
case intMath::TRIANGLE_RIGHT://加作用域限定符,使用枚举类型常量,不怕麻烦,加枚举名
printf("RT Triangle");
break;
default:
printf("Obtuse Triangle");
break;
}
return 0;
}
展开全部
直接声明一个该枚举类型的变量即可,跟其他类型的变量一样啊!
例如:
TRIANGLE_TYPE object1 = TRIANGLE_ACUTE; // 声明一个该枚举类型的变量,并赋初值
例如:
TRIANGLE_TYPE object1 = TRIANGLE_ACUTE; // 声明一个该枚举类型的变量,并赋初值
追问
我如是写,有好多不明的错误,还望赐教!!
// 检查一个三角形的类型
template TRIANGLE_TYPE lMath::checkTriangleType(Type _a, Type _b, Type _c)
{
return TRIANGLE_TYPE::TRIANGLE_ACUTE;
}
追答
关于枚举类型的使用,方法就是这样的,你的错误应该是使用模板导致的,跟枚举类型无关。
如果你无法解决问题,请贴出你的详细错误信息。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询