Typedef和函数声明不能​​一起工作

时间:2013-02-28 13:41:29

标签: c++ typedef

我正在调整一些GDAL代码,并使用类似这样的typedef

typedef CPLErr (*MYWriter)( double dfLevel, int nPoints, double *padfX, double *padfY, void * );  

正在像这样的类中使用

class GDALGenerator
{
...blah...
public:
    MYWriter pfnWriter;
    GDALGenerator( int nWidth, int nHeight, MYWriter pfnWriter, void *pWriterCBData );
...blah...
};

但是在同一个文件中,当我创建像这样的函数

时,在GDALGenerator类下面
CPLErr MYWriter( double dfLevel, int nPoints, double *padfX, double *padfY, void *pInfo )
{}

我收到此错误

  

错误2错误C2365:'MYWriter':重新定义;以前的定义   是'typedef'f:\ projects \ map \ somecpp \ somecpp.cpp 1330 MyProjectName

我很困惑,因为正如这样使用标准的GDAL函数,并且它工作正常(在这种情况下,类在一个单独的DLL中)。我只是使用不同的名称制作了该函数的副本,但它不起作用。

1 个答案:

答案 0 :(得分:3)

您不能将类型名称用作函数名称,仅作为变量的类型。

我希望这说清楚:

CPLErr f( double dfLevel, int nPoints, double *padfX, double *padfY, void *pInfo )
{}
MYWriter foo = f;

``