错误原因
想声明一个匿名类,却没有一个类体结构。比如如果有下面的代码,就会出现这样的错误
#define optional
#include <iostream>
#include <map>
class optional;
int main(int argc, char *argv[])
{
std::cout<<"1111"<<std::endl;
}

常见导致该问题的错误
在作类前置声明的时候,若有宏定义和类名冲突,即会导致该问题
解决
当前没有较好的解决办法,只有#undef 相关的宏定义。最根本的还是尽量少用宏定义,因为宏定义经常污染命名空间