类型定义和函数声明不能一起工作

Typedef and function declaration not working together

本文关键字:不能 一起 工作 声明 函数 定义 类型      更新时间:2023-10-16

我正在调整一些GDAL代码,并使用像这样的类型定义

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 )
{}

我得到这个错误

Error 2 Error C2365: 'MYWriter': redefinition;之前的定义是'typedef' f:projectsmap someecpp someecpp .cpp 1330 MyProjectName

我很困惑,因为一个标准的GDAL函数就像这样被使用,它工作得很好(在这种情况下,类在一个单独的DLL中)。我只是用不同的名字复制了这个函数,它不起作用。

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

我希望这能说清楚:

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

"