【初心者歓迎】C/C++室 Ver.22【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0560デフォルトの名無しさん
2005/10/26(水) 09:52:22newのオーバーライドなのですが、適用するソース範囲を制限することはできませんでしょうか。
例えば「このCPPファイルの中のnewのみオーバーライド」や「このクラスのメンバー関数の中でつかわれるnewのみオーバーライド」が欲しいのです。
最も外側でoperator newをオーバーライドすると、全てのnewが上書きされますよね。
とある組み込み機器の環境でこれに困っていまして、システム側が勝手にnewを使ってるっぽいのです。
オーバーライドしたnewの中身には、自前メモリー管理システムが入っているのに、その管理クラスの初期化前に呼ばれてエラーになってしまいます。
制限によって、システム側の勝手にnew呼び出しの前に処理を書くことができませんし、初期化時の値が保証されている変数も存在しません。(あればnewの中でそれをフラグにして分岐を行なうのですが)
例えばあるクラスの中で行なうnewのみをオーバーライドできるというのが理想です。
・CPPファイルを分ければOKかと思ったのですが、リンクの段階で「すでに定義されています」エラー
・(自作)CAppクラスのCApp::operator newをオーバーライドすれば、CAppの中で使われているnewがオーバーライドされるのかと思ったら、new CAppがオーバーライドされるだけだった
■ このスレッドは過去ログ倉庫に格納されています