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”。