cstdlib malloc()およびfree()関数の上にカスタム メモリ アロケータを作成しています(パフォーマンス上の理由から)。アロケータは、いくつかのメモリ バッファとその他のパラメータを格納する単純なクラス内にあります。メモリを解放するメソッドにfree ()という名前を付けたいのですが、クラス内からcstdlib のfree()を使用できるようにする必要があります。
#include <cstdlib>
inline void cstdlib_free(void * M){ free(M); } // Works, but is ugly!
class MyAllocator{
/* ... */
// Does internal class operations; Does NOT use stdlib's free
free(void * _Memory){ /* ... */ }
// Frees buffers to system memory; USES stdlib's free
clear(void){
/* ... */
cstdlib_free(Buff); // THIS is what I want to change
/* ... */
}
};
今のところ、cstdlib の free() のラッパーを作成することでこれを解決しましたが、もっと良い解決策があるはずだと思わずにはいられません (また、クラスの free() メソッドの名前を変更したくありません。名前は一貫している必要があります)。この質問の最初の回答に沿った解決策、つまり cstdlib の基本クラスを使用してfree()にアクセスすることを望んでいました。
C++ は、標準 C 関数にクラス構造としてアクセスする方法を提供していますか? クラス宣言の直下でスコープを使用したいことをコンパイラーに伝える方法はありますか (この場合は存在しないスーパークラスではありません!)?