宣言
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 内に配置すると、バイパスされる場合があります。