2

我正在尝试使用当前的 c 编译器编译一些旧代码(大约 2003 年的 robocup 足球模拟服务器):

gcc-c++-4.7.2-2.fc17.x86_64

下面的函数会在这个问题的主题中产生错误。任何关于如何修改函数以消除错误的建议将不胜感激。

int getInt( const std::string& param ) const
{ return rcss::conf::Builder::template get< int >( param ); }
4

2 回答 2

1

我假设这Builder是一个类,并且get是该类的静态模板方法。

关键字template告诉编译器这get是一个模板方法。但是,gcc如果它不在模板中,则表示您不应该使用该关键字。

因此,删除template关键字应该可以使其工作。

于 2013-01-11T23:56:32.917 回答
1

从 C++03、14.2.4

当成员模板特化的名称出现在postfix -expression.之后或之后,或者在限定 id中的nested-name-specifier之后,并且 postfix-expression 或qualified-id 显式依赖于模板参数(14.6.2 ),成员模板名称必须以关键字模板为前缀。->

在您的示例中,rcss::conf::Builder不明确依赖于模板参数,这使得template关键字无用(VC 允许)。

于 2013-04-11T10:45:10.903 回答