4

更新するために既存のコードを理解するのに苦労しています。私は、この宣言でのコロンとプログラム名の使用に慣れていません。プログラムは宣言で呼び出されるように見えるrbac4xmlと呼ばれ、次にコロンを使用してロールタイプとポインターにアクセスします。

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 に答える