У меня действительно неприятная проблема с кодом, который я написал. Я нашел кого-то еще, у кого была та же проблема со стековым потоком, и я попробовал решения, но ни один не работал для меня.
Я печатаю определения нескольких распространенных типов STL, которые я использую, и ни у одного из других нет проблем, кроме случаев, когда я пытаюсь определить карту.
При включении моего заголовка в тестовую программу я получаю сообщение об ошибке "some_file.h: 83: error: ожидаемый инициализатор перед знаком '<' token". </p>
Вот важная часть заголовка (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;
Включения в some_file.cpp:
#include <utility>
#include <map>
#include <vector>
#include <iostream>
#include <string>
#include <stdio.h>
#include <cc++/file.h>
#include "some_file.h"
Тестовый файл просто содержит строку, вектор и мой файл в указанном порядке. У него есть основной метод, который просто делает что-то вроде Hello World.
Самое смешное, что я быстро собрал шаблонный класс, чтобы увидеть, где была проблема (заменив «std::map<Column...
» на «hello<Column...
»), и она работала без проблем.
Я уже создал перегрузку оператора, требуемую картой, если вы используете класс без оператора '<
'.