• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロを書き換えたい。)

マクロ書き換え方法を教えてください

このQ&Aのポイント
  • プログラムの保守の請け負いをしている私は、マクロの書き換え方法について悩んでいます。
  • 特定のマクロを書き換える必要があるのですが、具体的な方法がわかりません。
  • Fooクラスのセット処理を見やすくするために、マクロを改変したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • myuki1232
  • ベストアンサー率57% (97/170)
回答No.2

> 「<<<<===」ですが、これは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. の場合は、今あるマクロをそのままメンバ関数にするだけです。 ただ、引数の型が不明の場合は、関数にするにはテンプレートなどを使う必要があるでしょう。

TeijigoTeatime
質問者

お礼

早々のご返答ありがとうございます。 説明するため簡略化したつもりが返って良くなかったようです。申し訳ありません。 「関数にする」というのは気がつきませんでした。 早速試してみます。ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

余談ですが「保守」を考えるなら最低限 _SET という名前はやめた方がいい. この手の識別子は処理系予約.

TeijigoTeatime
質問者

お礼

早々のご返答ありがとうございます。 説明を簡略化したかったので _SET にしましたが、実際は _SET_XXXXX となっています。 それでもどこか被りそうな名前でしたので、すでに提案はしてあります。 ご指摘ありがとうございます。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

質問文に書かれているマクロあってますか? lpFooの定義が見当たりませんけど。 >「<<<<===」ですが、これはHogeクラスが持っている演算子です。Fooクラスをセットするというものです。 C++ですよね? C++って演算子の追加ってできましたっけ・・・

関連するQ&A