开发者社区> 问答> 正文

关于c++枚举出错,求高手指点。。。?报错

我定义了这么几个枚举类型:

namespace scf {
typedef enum {
	Response = 1, Request, Exception, Config, Handclasp, RebootException
} SDPType;

typedef enum {
	JSON = 1, JAVABinary, XML, SCFBinary
} SerializeType;

typedef enum {
	Java = 1, Dotnet, C
} PlatformType;

typedef enum {
	UnCompress, SevenZip
} CompressType;
//.........
}
 这样使用:

Protocol::Protocol(int sessionId, char serviceId, SDPType sdpType, void* sdpEntity, const char *sdpEntityType) {
	this->sessionId = sessionId;
	this->serviceId = serviceId;
	this->sdpType = sdpType;
	this->sdpEntity = sdpEntity;
	this->sdpEntityType = (char*) sdpEntityType;
	this->userData = NULL;
	this->serializeType = SCFBinary; // 这里
	this->compressType = UnCompress;  //这里
	this->platformType = C; //这里
}
以上使用正常。现在我想给SerializeType这个枚举添加一个语素,如:

typedef enum {
	JSON = 1, JAVABinary, XML, SCFBinary, SCFV2
} SerializeType;
则添加之后,使用时报错, 说Uncompress 和C 没有定义,不知道是什么原因。求指教...

我是用eclipse在linux写的c++程序

展开
收起
爱吃鱼的程序员 2020-06-22 18:53:45 685 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你这样定义枚举不太好吧.可以这样试下:

    typedef enum 

    {


      PT_Java=0, 

        PT_Dotnet, 

         PT_C,


    }PlatformType;
    C太短了

    这个不算出错吧?能把log输出来看下不?回复 @VirtualToy:都没有错~我估计是eclipse的问题回复 @le284:this->compressType=UnCompress;这个是25行么?类定义中,compressType的类型声明有错么?刚才没事运行了一下,编译出错,可是运行没错,是clear之后运行的。DescriptionResourcePathLocationTypeSymbol'UnCompress'couldnotberesolvedProtocolType.cpp/c/src/clientline25SemanticError是不是没有编译,直接运行了。你使用了typedef,所以你得定义一个 SerializeType类型的变量,如 SerializeTypesetype,然后再使用:this->compressType=setype.UnCompress我那样使用并没有错,虽然eclipse报错,但是仍然能正常编译,运行~加个枚举值会出错?
    实质上是没有错的,跟eclipse有关系,报错,但是能正常编译,能运行
    2020-06-22 18:54:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载