0

我正在调整一些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 中)。我只是用不同的名称复制了该函数,但它不起作用。

4

1 回答 1

3

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

我希望这说明清楚:

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

``

于 2013-02-28T13:46:10.477 回答