如题↑
#include<iostream>
using namespace std;
class DataType
{
public:
DataType(int A)
{
mode(INT);
B = A;
}
DataType(char A)
{
mode(CHAR);
E = A;
}
DataType(float A)
{
mode(FLOAT);
{
C = A;
}
}
void show();
private:
enum mode{CHAR,INT,FLOAT};
union
{
char E;
int B;
float C;
};
};
void DataType::show()
{
switch (mode)//此处报错
{
case CHAR:
cout << "CHAR=" << E << endl;
break;
case INT:
cout << "INT=" << B << endl;
break;
case FLOAT:
cout << "FLOAT=" << C << endl;
break;
default:
break;
}
}
int main()
{
int B=90;
char C = 'X';
float D=3.1415;
DataType A(B);
DataType E(C);
DataType F(D);
A.show();
E.show();
F.show();
return 0;
}
建议多调试一下,此类问题一般是语法错误!
mode是个类型,需要声明变量。
好像enum mode是个整体,不能只写mode
enum是枚举,使用的格式应该是mode.CHAR,mode.INT,mode.FLOAT
DataType(int A)
{
mode(INT);
B = A;
}
DataType(char A)
{
mode(CHAR);
E = A;
}
DataType(float A)
{
mode(FLOAT);
{
C = A;
}
}
你看这里面的mode, mode只是你声明的一个枚举类型,它并不是一个具体的对象或者说实例,mode可以说是DataType的内嵌类型,
但不是DataType的成员,你不能在show()里面对mode进行判断。
举个不是很恰当但是很容易理解的例子,你可以在DataType里面用int类型,你也可以在DataType构造函数里面写下int(888),
但你不能在show里面用switch(int),意思就跟你这个差不多。