0

我在头文件中声明了一个函数。

我不知道为什么,但编译器抱怨这一行并说"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

4 回答 4

7

问题是>>除非您使用的是 c++11,在此有效的情况下,请插入一个空格> >

std::map<std::string , std::list<std::pair<int, Event*> >*> * functionX(Customer * id, std::multimap<string, CustomerDetails> * p_mapWithCustomers);
于 2012-02-24T14:41:59.670 回答
2

标记>>是与两个连续字符分开的运算>符。在它们之间留一个空间。

C++11 修复了这个问题,但如果您的编译器不支持新标准,或者您没有启用该支持,那么您需要分隔字符,以免它们被>>没有位置的运算符混淆在模板操作中。

于 2012-02-24T14:42:22.217 回答
1

在中间添加一个空格后,>>您可能需要在 p_mapWithCustomers 的声明中添加一个std::限定条件。string

于 2012-02-24T15:33:34.947 回答
0

问题出在包含的定义文件中,我一取出错误就消失了。

当我在 Eclipse 中的 Windows 上编译它时,我发现它在宏定义错误中抛出了一个意外的标志。意外的标志也是“>”。感谢大家的贡献。

奥利弗

于 2012-02-28T05:48:52.037 回答