首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

烦请大家看看这两个结构体/类该怎么初始化

2012-09-29 
烦请大家看看这两个结构体/类该如何初始化1://TLV结构struct TLVEntity {unsigned char* Tag//标记unsign

烦请大家看看这两个结构体/类该如何初始化
1:
//TLV结构
struct TLVEntity {
unsigned char* Tag;//标记
unsigned char* Length;//数据长度
unsigned char* Value;//数据
unsigned int TagSize;//标记占用字节数
unsigned int LengthSize;//数据长度占用字节数
TLVEntity* Sub_TLVEntity;//子嵌套TLV实体
};


2:
//打包解析buffer(TLV结构)
class TLVPackage
{
public:
//TLVPackage();
//virtual ~TLVPackage();
static void Construct(unsigned char* buffer, int bufferLength, TLVEntity* tlvEntity, int& entityLength);
 
};

使用时这样:
TLVPackage A;
A.Construct(buffer, bufferLength, tlvEntity, entityLength)

烦请大家看看这两个结构体/类该如何初始化,VS2005环境下.....谢谢!

[解决办法]
不太清楚你要问什么

为什么把第二个的构造函数注释掉了?
[解决办法]
第一个,如果你用的是C语言,就写一个专门的函数进行初始化就可以了,分配内存用malloc。
如果是用C++,这两个都可以写到构造函数里。
不知道你说的编译出错是什么情况,贴完整代码或出错信息
[解决办法]
第二个类中并没有保存TLVEntity的指针,其实也没有必要保存这个指针。现在的TLVPackage其实与一个单独的函数Construct没有区别。这个函数应该有个调用的约定,即传入参数的正确性。如果传入参数不满足完成操作的必要条件,就返回错误值即可。
在这里,首先保证TLVEntity指针指向一个TLVEntity对象。其次,保证buffer指向一段合适大小的内存。
本着谁创建,谁释放的原则,函数不应该主动分配堆上的内存。
至于TLVEntity的初始化,可以在自己的构造函数中,也可以用单独的函数初始化。
[解决办法]

C/C++ code
TLVEntity entity = {NULL, NULL, NULL, 0, 0, NULL};TLVPackage::Construct(buffer, bufferLength, &entity, entityLength);
[解决办法]
探讨
引用:

第二个类中并没有保存TLVEntity的指针,其实也没有必要保存这个指针。现在的TLVPackage其实与一个单独的函数Construct没有区别。这个函数应该有个调用的约定,即传入参数的正确性。如果传入参数不满足完成操作的必要条件,就返回错误值即可。
在这里,首先保证TLVEntity指针指向一个TLVEntity对象。其次,保证buffer指向一段合适大小的内存……

热点排行