- ベストアンサー
マクロ書き換え方法を教えてください
- プログラムの保守の請け負いをしている私は、マクロの書き換え方法について悩んでいます。
- 特定のマクロを書き換える必要があるのですが、具体的な方法がわかりません。
- Fooクラスのセット処理を見やすくするために、マクロを改変したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 「<<<<===」ですが、これはHogeクラスが持っている演算子です。Fooクラスをセットするというものです。 「<<<<===」という演算子は C++ にはありませんが、本当は別の演算子だけど、仮にこう書いているということですよね? > なんか見づらいので下記のように書き換えて欲しいと言われたのですが、どう書き換えていいものかわかりません。 > hoge <<<<=== _SET( hoge, 1, 2, 3 ) ; 見やすくなってませんが、 1. hoge <<<<=== _SET( 1, 2, 3 ); か 2. hoge._SET( 1, 2, 3 ); の間違いでは? Hoge クラスをいじっても良い場合は 2. 、そうでない場合は 1. になるでしょう。 1. の場合、単に _SET を Foo のインスタンスを返す関数にするだけです。 例: inline Foo _SET(__a, __b, __c) { Foo ret; ret.SetParamA( __a ) ; ret.SetParamB( __b ) ; ret.SetParamC( __c ) ; return ret; } 2. の場合は、今あるマクロをそのままメンバ関数にするだけです。 ただ、引数の型が不明の場合は、関数にするにはテンプレートなどを使う必要があるでしょう。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
余談ですが「保守」を考えるなら最低限 _SET という名前はやめた方がいい. この手の識別子は処理系予約.
お礼
早々のご返答ありがとうございます。 説明を簡略化したかったので _SET にしましたが、実際は _SET_XXXXX となっています。 それでもどこか被りそうな名前でしたので、すでに提案はしてあります。 ご指摘ありがとうございます。
- wormhole
- ベストアンサー率28% (1626/5665)
質問文に書かれているマクロあってますか? lpFooの定義が見当たりませんけど。 >「<<<<===」ですが、これはHogeクラスが持っている演算子です。Fooクラスをセットするというものです。 C++ですよね? C++って演算子の追加ってできましたっけ・・・
お礼
早々のご返答ありがとうございます。 説明するため簡略化したつもりが返って良くなかったようです。申し訳ありません。 「関数にする」というのは気がつきませんでした。 早速試してみます。ありがとうございました。