テンプレートパラメータが許可されていないため、テンプレートパラメータを友人にすることはできません。どのように私は効果的に同じ事を得ることができますか?私が欲しいものテンプレートパラメータの追加
は、基本的には、それを所有するオブジェクト外使用できないタイプです。どうしてそもそもポイントの横にあるのですが、本当に知っていなければならない場合は、所有リソースの共有の問題に答えるスマートポインタのセットを策定しようとしています。それは自身の所有者宣言しない限り
template < typename T, typename Owner >
struct accessible_member
{
private:
accessible_member() : val(T()) {}
accessible_member(T const& t) : val(t) {}
operator T&() { return val; }
operator T const&() const { return val; }
member_ptr<T> operator &() { return member_ptr<T>(val); }
friend class Owner;
};
は、このようにクラスがメンバーとしてこのオブジェクトを保持することはできません、それは十分に愚かだ場合は公開する。このように私は何を探していることは、それが働いていた場合、そのようなものですそれはそうであるように、クラスの外で愚かであることは不可能になります。
最後の段落のように、私はbraindeadのコードを防止しようとしていません。 C++では、十分な努力をすれば、誰かがあなたのコードを壊す可能性があるということだけを受け入れる必要があります。 –
@Fred - 'const'とRAIIを含むコード安全対策を導入しようとする試みに対して、同じような愚かな議論を使うことができます。異なる哲学のもとで作業するかもしれませんが、私は、あなたの構文が正しく使いやすく、間違って使いにくいというガイドラインの下でコーディングします。コンストラクト自体の全体的なポイントは、他のものによって提供されていない安全対策を導入することです。私はあなたの疑問に対するあなたの反対を、冗長で、外れていて、かなり率直に攻撃しています。 –
@ NoahRoberts:1)これは正しく使用するのが簡単ではないようです。 2)ConstとRAIIは間違って使いやすい。 3)私の理解の欠如( "私の意見は分かりません")がどのようにして不快に感じるのですか?私を守るために私のために怒っていますか? –