4

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

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

我试图在参考书和谷歌中找到这个,但现在很遗憾必须问:) 感谢您的帮助。

4

2 回答 2

2

宣言

const rbacp4xml::Keys &keys

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

宣言

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

据我所知,它不是有效的 C++。由于#defines 不允许在其中使用冒号,因此您可以确定 rbacp4xml:Role: 没有以这种方式重新定义。即使您将 Role 定义为空定义,即

#define Role

你不能写 rbacp4xml:Role: 来获取 rbacp4xml::。

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

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

这意味着您将创建一个指针向量,每个指针都指向一个类型为 rbacp4xml::Role 的变量,即在类 rbacp4xml 中有一个 typedef Role。

如果您的代码确实可以编译,那么这部分可能会以某种方式被绕过。尝试在声明前加上#error。如果你的代码仍然可以编译,你就会知道它被绕过了。例如,当放在#ifdef..#endif 中时,它可能会被绕过。

于 2013-10-02T06:38:59.027 回答
0

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

于 2013-10-02T06:44:19.753 回答