我很难理解一些现有的代码以更新它。我不熟悉此声明中的冒号和程序名称的使用。该程序名为 rbac4xml,似乎在声明中被调用,然后使用冒号访问 Roles 类型和指针。
void output_keyrings(const std::vector<rbacp4xml:Role:*> &roles, const rbacp4xml::Keys &keys );
我试图在参考书和谷歌中找到这个,但现在很遗憾必须问:) 感谢您的帮助。
我很难理解一些现有的代码以更新它。我不熟悉此声明中的冒号和程序名称的使用。该程序名为 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:Role: 来获取 rbacp4xml::。
所以我强烈怀疑这是一个拼写错误。它可能应该是:
const std::vector<rbacp4xml::Role *> &roles
这意味着您将创建一个指针向量,每个指针都指向一个类型为 rbacp4xml::Role 的变量,即在类 rbacp4xml 中有一个 typedef Role。
如果您的代码确实可以编译,那么这部分可能会以某种方式被绕过。尝试在声明前加上#error。如果你的代码仍然可以编译,你就会知道它被绕过了。例如,当放在#ifdef..#endif 中时,它可能会被绕过。
这不是有效的可移植 C++。可能是自定义扩展,或者此代码在发送到 C++ 编译器之前通过一些预处理器运行。