C ++:将typedef结构指针传递给函数,得到不明确的错误

时间:2013-11-30 13:45:49

标签: c++ pointers struct

代码通过指针传递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 *)'

1 个答案:

答案 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 ++)。