用enum型的数据类型作为函数的返回值类型的时候,为什么必须把enum的定义在类的定义之外? 用enum型的数据类型作为函数的返回值类型的时候,为什么必须把enum的定义在类的定义之外?注;定义在类内部的时候编译出错。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class A {public: enum color{red =1 ,blue =2}; enum color GetAcolor() { return red; }};void CDlg16Dlg::OnButton4() { A a; A::color clr; clr = a.GetAcolor();// ShellExecute(NULL, "open" ,"IEXPLORE.EXE" , "f:\\temp\\test", NULL, SW_SHOWNORMAL); } 您给出的是内联函数的写法吧,若是普通的类成员函数比如我如下的写法没法通过编译XXDoc.h...enum TRAFFIC_RULE{MEETING, RIGHT_CROSSING = 2, LEFT_CROSSING = 3, OVERTAKING = 4}; typedef struct STATE_MEMOtag { int collisiontimes; vector<int> shipNo; vector<TRAFFIC_RULE> trule; }STATE_MEMO; STATE_MEMO m_smState[TMAX];private: TRAFFIC_RULE _TrafficeRule(FPOINT po, FPOINT pt);...XXDoc.cppTRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt){ TRAFFIC_RULE TRULE; float x, y; double A, a; x = pt.x - po.x; y = pt.y - po.y; if ( fabs(x) < 0.0001 && fabs(y) < 0.0001) { AfxMessageBox("ERR!"); } else if ( fabs(x) < 0.0001) { if (y > 0) A = 0; else A = 180 * rad; } else TRULE = OVERTAKING; return TRULE;}void CMultiModeDoc::NavigationModel(int ntime){ TRAFFIC_RULE tstate;.............. tstate = _TrafficeRule(m_sp[i].pn, m_sp[j].pn); m_smState[i].trule.push_back(tstate);..............} #include <iostream.h>class A {public: enum color{red =1 ,blue =2}; enum color GetAcolor();/* { return red; }*/};enum A::color A::GetAcolor(){ return red;}void main(void){ A a; A::color clr; clr = a.GetAcolor(); cout<<clr<<endl;} 不知道是不是运行环境的原因,我下面的程序和你给出的例子应该是一样的吧,可是通不过编译:XXDoc.h...public:enum TRAFFIC_RULE{MEETING, RIGHT_CROSSING = 2, LEFT_CROSSING = 3, OVERTAKING = 4};private: TRAFFIC_RULE _TrafficeRule(FPOINT po, FPOINT pt);...XXDoc.cppTRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt){ TRAFFIC_RULE TRULE; float x, y; double A, a; x = pt.x - po.x; y = pt.y - po.y; if ( fabs(x) < 0.0001 && fabs(y) < 0.0001) { AfxMessageBox("ERR!"); } else TRULE = OVERTAKING; return TRULE;} XXDoc.cppTRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)//这行改为CMultiModeDoc::TRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)试试 enmu既然是在类里定义的 就要指明所在域啊 enum A::color A::GetAcolor()注意我上面的类域,OK,你那个没有的,参照sigma1123(未知的界限) ( ) 信誉:100 2004-8-20 21:50:37 得分: 0 的说法, 很简单的画线功能,实现的不正确 <<三国智>>更新了哦... DLL调用DLL的问题 怎么样实现这样的拖放 msdn的使用问题 谁能说说typedef的用法 出现Cannot open include file: 'stdafx.h': No such file or directory错误,请大家帮忙解决一下,很急~~ 关于“新建” 登陆 在VC中调用COM组件,为什么非要放一个控件进去才可以调用成功? 菜鸟提问,关于属性页的基本问题 如何在客户区中显示ListCtrl
{
public:
enum color{red =1 ,blue =2};
enum color GetAcolor()
{
return red;
}
};
void CDlg16Dlg::OnButton4()
{
A a;
A::color clr;
clr = a.GetAcolor();
// ShellExecute(NULL, "open" ,"IEXPLORE.EXE" , "f:\\temp\\test", NULL, SW_SHOWNORMAL);
}
XXDoc.h
...
enum TRAFFIC_RULE{MEETING, RIGHT_CROSSING = 2, LEFT_CROSSING = 3, OVERTAKING = 4}; typedef struct STATE_MEMOtag
{
int collisiontimes;
vector<int> shipNo;
vector<TRAFFIC_RULE> trule;
}STATE_MEMO; STATE_MEMO m_smState[TMAX];private:
TRAFFIC_RULE _TrafficeRule(FPOINT po, FPOINT pt);
...XXDoc.cpp
TRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)
{
TRAFFIC_RULE TRULE;
float x, y;
double A, a; x = pt.x - po.x;
y = pt.y - po.y; if ( fabs(x) < 0.0001 && fabs(y) < 0.0001)
{
AfxMessageBox("ERR!");
}
else if ( fabs(x) < 0.0001)
{
if (y > 0) A = 0;
else A = 180 * rad;
}
else TRULE = OVERTAKING; return TRULE;
}void CMultiModeDoc::NavigationModel(int ntime)
{ TRAFFIC_RULE tstate;..............
tstate = _TrafficeRule(m_sp[i].pn, m_sp[j].pn);
m_smState[i].trule.push_back(tstate);
..............
}
class A
{
public:
enum color{red =1 ,blue =2};
enum color GetAcolor();
/* {
return red;
}*/
};enum A::color A::GetAcolor()
{
return red;
}
void main(void)
{
A a;
A::color clr;
clr = a.GetAcolor();
cout<<clr<<endl;
}
XXDoc.h
...
public:
enum TRAFFIC_RULE{MEETING, RIGHT_CROSSING = 2, LEFT_CROSSING = 3, OVERTAKING = 4};private:
TRAFFIC_RULE _TrafficeRule(FPOINT po, FPOINT pt);
...XXDoc.cpp
TRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)
{
TRAFFIC_RULE TRULE;
float x, y;
double A, a; x = pt.x - po.x;
y = pt.y - po.y; if ( fabs(x) < 0.0001 && fabs(y) < 0.0001)
{
AfxMessageBox("ERR!");
}
else TRULE = OVERTAKING; return TRULE;
}
TRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)//这行改为
CMultiModeDoc::TRAFFIC_RULE CMultiModeDoc::_TrafficeRule(FPOINT po, FPOINT pt)试试 enmu既然是在类里定义的 就要指明所在域啊
注意我上面的类域,OK,你那个没有的,参照sigma1123(未知的界限) ( ) 信誉:100 2004-8-20 21:50:37 得分: 0
的说法,