私はそれがすべてではないCItemオブジェクトがそう登録する必要があることが判明している間、私はコンストラクタでレジストリ(および登録の当然のを必要としませんCItemのバージョンを必要とする以下のクラスにした後オプションのリファレンスメンバー - 可能でしょうか?
class CItem
{
public:
CItem(CRegistry &Registry) _Registry(Registry) {Registry.Register();}
~CItem() {_Registry.Unregister()};
private:
CRegistry &_Registry;
}
を持っていますコード)。これをどのように実装できますか? 私がここで見ることができる唯一の解決策は、レジストリを取得してポインタとして保持することです。テンプレートを使用するなど、より洗練されたソリューションがありますか(リファレンスからポインタに切り替えるのは好きではありません)?
ところで、先頭にアンダースコアが付いている名前は、標準によって予約されています。 –
特にアンダースコアと大文字で始まる名前! –
詳細を述べる:アンダースコアの後ろに続く大文字の名前はどこにでも予約されています。アンダースコアで始まる他の名前は、グローバル名前空間でのみ予約されているので、あなたが主張している場合はメンバ変数として使用できます(実装固有の記号を隠す可能性はほとんどありません)。 17.4.3.1.2。 –