类中enum常量在new一个实例时要如何访问?

hgy1234 2007-04-02 10:27:23
==============test.h=========================
class CTest
{
public:
CTest();
~CTest();

enum AA {
AA_Data0 = 0,
AA_Data1 = 1,
AA_Data2,
AA_Data3
};
int GetAA(char c);
};
=======================test.cpp=================
#include "test.h"

int CTest::GetAA(char c)
{
char const tab[] = {'0','1','2','3'};

for (int i=0; i < 4; i++) {
if (tab[i] == c)
return i;
}

return -1;
}

=======================main.cpp=================

#include <stdio.h>
#include "test.h"

int main(int argc, char *argv[])
{
CTest *pTest = new CTest;

switch (pTest->GetAA('0')) {
case pTest->AA_Data0:
printf("char 0\n");
break;
case pTest->AA_Data1:
printf("char 1\n");
break;
case pTest->AA_Data2:
printf("char 2\n");
break;
case pTest->AA_Data3:
printf("char 3\n");
break;
default:
printf("unknow char\n");
break;
}

delete pTest;

return 0;
}

=====================================================
g++ -g -o test.o -c test.cpp
g++ -g -o main.o -c main.cpp
main.cpp: In function `int main(int, char**)':
main.cpp:9: error: `pTest' cannot appear in a constant-expression
main.cpp:9: error: '->' cannot appear in a constant-expression
main.cpp:12: error: `pTest' cannot appear in a constant-expression
main.cpp:12: error: '->' cannot appear in a constant-expression
main.cpp:15: error: `pTest' cannot appear in a constant-expression
main.cpp:15: error: '->' cannot appear in a constant-expression
main.cpp:18: error: `pTest' cannot appear in a constant-expression
main.cpp:18: error: '->' cannot appear in a constant-expression

...全文
324 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hgy1234 2007-04-04
  • 打赏
  • 举报
回复
谢谢 lin_style(﹏.贾诩)
lin_style 2007-04-02
  • 打赏
  • 举报
回复
类名::enum

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧