c在声明中不熟悉使用’:’

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

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

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

最佳答案 声明

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时可能会被旁路.

点赞