я щипая немного 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': redefinition; предыдущее определение было «ЬурейеЕ» F: \ Проекты \ \ карта somecpp \ somecpp.cpp 1330 MyProjectName
Я запутался, потому что стандартная функция GDAL используется так же, как это, и он работает отлично (класс находится в отдельной DLL в этом случае). Я только что сделал копию функции с другим именем, и она не работает.
И 'typedef' и функции имеют такое же имя. Вы должны переименовать один или другой. Я также рекомендую вам посмотреть на ['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function), который может использоваться для всех видов функций, а не только для автономных или статические функции-члены. –