类型定义和函数声明不能一起工作
Typedef and function declaration not working together
我正在调整一些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;
"
相关文章:
- 为什么我不能将 rand() 与数组的大小一起使用?
- 不能将复制初始化与隐式转换的多个步骤一起使用
- Python 3.8 不能与 Pybind11 一起导入 [Windows]
- Turbo C++ cin() 不能与 gets() 一起使用
- 不能将重载比较运算符与 Catch 测试一起使用
- 不能将C++的"std::filesystem"库与介子构建一起使用
- C++程序在将 int 与 cin 一起使用时有效,但不能使用字符串
- std::remove() 按预期处理文字,但不能与取消引用的迭代器一起工作
- 为什么我不能将运算符+与reverse_iterator一起使用?
- 为什么引用和指针不能一起使用?
- C++:printf 和 wprintf 不能一起工作 (Linux)
- Apple Mach-O Linker (ld) 错误.ld: -r 和 -dead-strip 不能一起使用
- typeinfo name() 和 endl 在 Windows 和 mingw 中不能一起工作
- boost和Curl不能一起工作
- Q_ENUMS和using声明不能一起工作
- 为什么linux管道和标准输出不能一起工作
- c++ /OpenGL: vao单独工作,但不能一起工作
- 类型定义和函数声明不能一起工作
- pcap_stats和pcap_dump_open不能一起工作
- OSX 10.8.5 上的 Android 构建错误:cp:-R 和 -r 选项不能一起指定