C++ C++;:将typedef结构指针传递给函数,获取不明确错误
代码通过指针传递C++ C++;:将typedef结构指针传递给函数,获取不明确错误,c++,pointers,struct,C++,Pointers,Struct,代码通过指针传递typedef struct,但发生了错误 守则: 定义typedef结构 typedef struct MemBuffer { unsigned char *buffer; unsigned char *position; size_t size; } MemBuffer; ... 班长档案 class Request { private: void MemBufferGrow(MemBuffer *b) vo
typedef struct
,但发生了错误
守则:
定义typedef结构
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)
时,发生错误
FuffFisher Reo是“模糊的”候选:空MePfSergReo(MeMeffux*)
< P> >在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++中,我们应该使用<代码>结构> {}} />代码>代替<代码> TyPufFrxt{{}} < /COD> < /P>
第一种情况在VC++中实际运行时没有错误
但它确实在g++编译器(我在eclipse C++中使用cygwin)中报告了错误。Stop。使用。Typedef struct.struct T{};暗示typedef结构T{}T;在C++中,如果名称不明确,编译器通常会显示至少两个候选名称。因此,显示完整的错误表集。代码不完整,无法编译,并且不是有效的测试用例。连第二个“MemBufferGrow”都不见了!void MeMBufferGrow(MemBuffer*b)与void Request::MeMBufferGrow(MemBuffer*b)不同,请参见声明中的大“M”。