Компилятор кричит Текст ">" является неожиданным C ++ XLC - PullRequest
0 голосов
/ 24 февраля 2012

Я объявил функцию в моем заголовочном файле.

Понятия не имею почему, но компилятор стонет об этой строке и говорит, что "The Text ">" неожиданно.

Я использую AIX 5.3 и компилятор XLC / VAC.Возможно, что-то не так с моим определением функции, но я предположил, что карта должна знать, какие типы она содержит для работы.

Проблемная строка напечатана ниже.

std::map<std::string , std::list<std::pair<int, Event*> > * > * functionX(Customer * id, std::multimap<string, CustomerDetails> * p_mapWithCustomers);

Я предполагаю, что это правильное объявление функции

Как предлагается ниже, я определил typedefs, к сожалению, этотолько перевернуть проблему, теперь я получаю ту же ошибку в строке typedefs.

typedef std::pair<int, Event* > pair_event_t;
typedef std::map<std::string, pair_event_t * > map_rule_t;

Ответы [ 4 ]

7 голосов
/ 24 февраля 2012

Проблема в >>, если вы не используете c ++ 11, где это допустимо, вставьте пробел > >

std::map<std::string , std::list<std::pair<int, Event*> >*> * functionX(Customer * id, std::multimap<string, CustomerDetails> * p_mapWithCustomers);
2 голосов
/ 24 февраля 2012

Маркер >> является отдельным оператором из двух последовательных > символов.Поместите пробел между ними.

C ++ 11 исправляет это, но если ваш компилятор не поддерживает новый стандарт или вы не включили эту поддержку, то вам нужно разделить символы так, чтобыВы не путаетесь с оператором >>, которому нет места в шаблонных операциях.

1 голос
/ 24 февраля 2012

После добавления пробела в середине >> может потребоваться добавить std:: квалификацию для этого string в объявлении p_mapWithCustomers.

0 голосов
/ 28 февраля 2012

Проблема была во включенном файле определения, как только я вынул его, ошибка исчезла.

Я понял это, когда я скомпилировал его на окнах в моем затмении, он бросал неожиданный знакошибка определения макроса.Неожиданным знаком также было «>».Спасибо всем за помощь.

Оливер

...