Nav
Nav

Reputation: 20658

Typedef and function declaration not working together

I was tweaking a bit of GDAL code, and am using a typedef like this

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

which is being used in a class like this

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

but in the same file, below the GDALGenerator class when I create the function like so

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

I get this error

Error 2 error C2365: 'MYWriter' : redefinition; previous definition was 'typedef' f:\projects\map\somecpp\somecpp.cpp 1330 MyProjectName

I'm confused, because a standard GDAL function is being used exactly like this, and it works fine (the class is in a separate DLL in that case). I just made a copy of the function with the different name, and it doesn't work.

Upvotes: 0

Views: 508

Answers (1)

hannes
hannes

Reputation: 964

you cannot use the type name as a function name, only as a type of a variable.

I hope this makes it clear:

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

``

Upvotes: 3

Related Questions