2011-07-11 8 views
1

は、サードパーティのライブラリでこのような機能を仮定します他の関数の戻り値の型を変更するためにラッパー関数をどのように実装しますか?

rttype func(...); 

あなたはその戻り値の型がrttype *代わりのrttypeであるという点で同じだけ異なるが機能ラッパー関数を書くにはどうすればよいですか?

+0

あなたは何を試しましたか? –

+0

私が試みたのは、関数の終了後に範囲外に出てくるので、単に&retによってはできないということです。 –

答えて

3

グローバルメモリ(ヒープ上のメモリ)を割り当て、そこにrttypeを割り当て、アロケートされたメモリへのポインタを返す必要があります。もちろん、これを行うにはあとでメモリを解放する必要があります。

しかし、これを行うことで、関数の意味と設計が変更されているので、これを念頭に置き、これを遵守するために責任を持って変更する必要があります。

4

一般的に言えば、あなたはそうではありません。他の方向に向かうのは時には合理的かもしれませんが、ポインタを返すと、生涯と所有権の問題を紹介します。具体的には、ポインタを返すのは何ですか?その責任は(もしあれば)それが指すメモリを解放することですか?

これらの質問は、通常、全体のデザインに影響するため、単純なラッパーで合理的に対処できるものではありません。

関連する問題