我写的一些代码有一个非常讨厌的问题.我发现其他人在stackoverflow上有同样的问题,我尝试了解决方案,但没有一个对我有用.
我键入了几个我正在使用的常见STL类型,除了我尝试键入地图时,没有其他任何问题.我在测试程序中包含我的标题时出现"some_file.h:83:错误:'''令牌之前的预期初始化程序"错误.
这是标题的重要部分(some_file.h):
#ifndef SOME_FILE_H
#define SOME_FILE_H
// some syntax-correct enums+class prototypes
typedef std::string str;
typedef std::vector<Column> col_vec;
typedef col_vec::iterator col_vec_i;
typedef std::vector<Row> row_vec;
typedef row_vec::iterator row_vec_i;
typedef std::vector<str> str_vec;
typedef str_vec::iterator str_vec_i;
typedef std::vector<Object> obj_vec;
typedef obj_vec::iterator obj_vec_i;
typedef std::map<Column, Object> col_obj_map; // error occurs on this line
typedef std::pair<Column, Object> col_obj_pair;
Run Code Online (Sandbox Code Playgroud)
some_file.cpp中的包含是:
#include <utility>
#include <map>
#include <vector>
#include <iostream>
#include <string>
#include <stdio.h>
#include <cc++/file.h>
#include "some_file.h"
Run Code Online (Sandbox Code Playgroud)
测试文件只包含该顺序的字符串,矢量和我的文件.它有一个主要的方法,只是做一个问候世界的事情.
有趣的是,我很快就把一个模板化的课程拼凑在一起,看看问题出在哪里(用" std::map<Column..."替换" hello<Column..."),它没有问题.
如果您使用的是没有' <'运算符的类,我已经创建了地图所需的运算符重载.