c ++在声明中不熟悉使用':'

时间:2013-09-09 00:05:39

标签: c++

我无法理解一些现有代码以便更新它。我不熟悉冒号的使用和本声明中的程序名称。该程序称为rbac4xml,它似乎在声明中被调用,然后冒号用于访问Roles类型和指针。

void output_keyrings(const std::vector<rbacp4xml:Role:*> &roles, const rbacp4xml::Keys &keys );

我试图在参考书和谷歌中找到这个,但现在可悲的是必须要问:)谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

声明

const rbacp4xml::Keys &keys

清楚地表明rbacp4xml是一个具有名为Keys的成员类型的类。

声明

const std::vector<rbacp4xml:Role:*> &roles
据我所知,

无效的C ++。由于#defines不允许使用冒号,因此您可以确定rbacp4xml:Role:尚未以这种方式重新定义。即使您将Role定义为空定义,即

#define Role

你不能写rbacp4xml:角色:获取rbacp4xml ::。

所以我强烈怀疑这是拼写错误。它可能应该是:

const std::vector<rbacp4xml::Role *> &roles

这意味着你要创建一个指针向量,每个指向一个rbacp4xml :: Role类型的变量,即rbacp4xml类中有一个typedef角色。

如果你的代码编译好了,也许这个部分会以某种方式被旁路。尝试在声明前添加#error。如果您的代码仍然编译,您将知道它是旁路的。例如,当放入#ifdef ..#endif时,它可能被旁路。

答案 1 :(得分:0)

这不是有效的可移植C ++。可能是自定义扩展,或者此代码在发送到C ++编译器之前通过某些预处理器运行。