対応するfriend
バージョンのmethods
のコードを再利用することは可能ですか?例えば、以下の例では、doSomething
とinitDoSomething
の両方の方法が同じ計算を行うため、それらの実装は実質的に同じです。そのようなことをコードを再利用するための最良の方法はどれでしょうか?コードを再利用する:友人以外の方法を使った友人の方法
template < typename T >
class CFoo;
template < typename T > CFoo<T> doSomething(double);
template < typename T >
class CFoo{
public:
...
friend CFoo<T> doSomething< >(double);
CFoo<T> initDoSomething(double);
};
任意の提案は、私が達成したい何;-)
を歓迎しているようなものです。また、必ずしもオブジェクトを初期化する必要の有無にかかわらず myFooObject1 = doSomething(3.0);
: myFooObject1.doSomething(3.0);
あなたは両方のバージョンが必要ですか?代わりにinitDoSomethingを静的関数にする必要はありませんか? – crazyjul
initDoSomething()はCFooのメンバーにアクセスしますか?はいの場合、doSomething()と同じことをどうすればできますか?そうでない場合、それはなぜメンバーですか? –
私の謙虚な意見では、友達やテンプレートは避けるべきです。必要な場合にのみそれらを使用し、論理的な意味を持ちます。なぜ、まさにあなたは達成しようとしていますか? –