2011-08-25 8 views
0

.Net管理ラッパーを作成しています。すべてのコードはC++であり、C++/CLIを使用してラッパーを作成しています。C++/CLIを使用して保護されたメンバー関数をラップする

C++クラス内のいくつかの関数は保護されたレベルにあるため、これらの関数をラップすることはできません。私は私が保護機能をラップしようとするたびに、クラス・エラーに宣言した。

「保護されたメンバにアクセスすることはできません取得に保つことはこれを回避するには、保護されたメソッドがクラス内からのみ呼び出すことができますか?

答えて

2

ありますかそのサブクラス

保護されたメソッドをラップする必要はありません。これは、クラス階層内からのみ呼び出されることを意図しているためです。ラッパーを使用するアプリケーションは、C++またはC++/CLIクラスを使用することができます。

保護されたmあなたのラッパークラスのエドード、誰がそれを呼んでいますか?ラッパークラスのメソッドはprotectedとして宣言され、ラッパークラスのコンシューマーはそれを呼び出すことができません。

+0

しかし、他の人が既存の管理対象クラスからクラスを派生させたいとします。そのような場合、保護された機能を呼び出すことができるはずですが、ラップされていなければ、彼はアクセスできなくなります! – Saurabh

1

既存のアンマネージドクラスから派生した新しいアンマネージドクラスを作成し、保護されたメンバをpublicとして再度公開します。次に、新しく派生したクラスをラップするマネージクラスを作成し、は、保護されている元のメンバをマネージ型の階層で公開します。

関連する問題