我写了这样的课:
#pragma once
#include "stdafx.h"
struct Date
{
private:
int day;
int year;
enum Month {jan = 1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
Month* month;
enum date_state
{
good,err_flag, bad_day, bad_month, bad_year,
};
//I would like to define converting operator from enum to char
Date::date_state::operator char()
{
return err_flag;
}
date_state err_state;
void clear(date_state state = good);
date_state rdstate() const;
void check_day(const int d)const;
void check_month()const;
void check_year()const;
public:
Date(const int d,const Date::Month& m, const int y);
};
基本上它不起作用。
答案 0 :(得分:1)
枚举不是类/结构,因此您无法为其定义转换运算符。
我建议编写一个全局范围(在命名空间内)函数来进行正确的转换。
有些事情:
char convert (Month m) {
switch (m) {
case (jan): return 'j';
case (feb): return 'f';
default: return 'x';
}
}
答案 1 :(得分:0)
您无法为enum date_state
声明成员函数,因为它是枚举,但您可以class Date
执行此操作:
class Date {
...
enum date_state
{
good, bad_day, bad_month, bad_year,
} err_flag;
operator char() {
return err_flag;
}
}
但我宁愿建议使用普通的成员函数,因为转换操作符很容易被意外使用。