代码通过指针传递typedef struct
,但错误发生了
代码:
定义typedef struct
typedef struct MemBuffer
{
unsigned char *buffer;
unsigned char *position;
size_t size;
} MemBuffer;
...
班主任档案
class Request
{
private:
void MemBufferGrow(MemBuffer *b)
void MemBufferAddByte(MemBuffer *b, unsigned char byt);
...
}
班级.cpp
文件
void Request::MemBufferGrow(MemBuffer *b)
{
size_t sz;
sz = b->position - b->buffer;
b->size = b->size *2;
b->buffer =(unsigned char *) realloc(b->buffer,b->size);
b->position = b->buffer + sz;
}
void Request::MemBufferAddByte(MemBuffer *b,unsigned char byt)
{
if( (size_t)(b->position-b->buffer) >= b->size )
MemBufferGrow(b); //at this line, I get that ambiguous error
*(b->position++) = byt;
}
在函数内部:
void Request::MemBufferAddByte(MemBuffer *b,unsigned char byt)
调用MemBufferGrow(b)
时,错误发生了,
'MemBufferGrow'含糊不清'候选人是:void MemBufferGrow(MemBuffer *)'
答案 0 :(得分:0)
所以在C ++中解决这个问题。
typedef struct MemBuffer
{
unsigned char *buffer;
unsigned char *position;
size_t size;
} MemBuffer;
应更正为:
struct MemBuffer
{
unsigned char *buffer;
unsigned char *position;
size_t size;
};
在C ++中,我们应该使用struct T{ ... }
而不是typedef struct { ... }T
第一种情况实际上在VC ++中运行时没有错误。
但它确实报告了g ++编译器中的错误(我使用cygwin eclipse C ++)。