我正在调整一些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中)。我只是使用不同的名称制作了该函数的副本,但它不起作用。
答案 0 :(得分:3)
您不能将类型名称用作函数名称,仅作为变量的类型。
我希望这说清楚:
CPLErr f( double dfLevel, int nPoints, double *padfX, double *padfY, void *pInfo )
{}
MYWriter foo = f;
``