質問: visual studio2015・c++環境での質問です。 下記のように#defineでclassを置き換えたときに、 コンストラクタ以降の関数宣言場所に緑線と関数定義が見つかりませんと出ます。 関数定義は別ファイルにちゃんとあるのを確認しましたが、 この場合の対処方法がわからず質問させていただきました。 一応コンパイルと実行はできるのですが気になってしまっています。 アドバイスよろしくお願いします。 ``` #define GAMEMANAGER(T) class T GAMEMANAGER ( GameManager) { public: GameManager(); ~GameManager(); void Initialize(); void Update(); void Draw(); void Clear(); }; ```
回答: > > コンストラクタ以降の関数宣言場所に緑線と関数定義が見つかりませんと出ます。 > > > これはVS2015のインテリセンスの機能からいってどうしようもないと思います。 そもそも何で#defineでこのような定義をしているのでしょうか? この > > > ``` > #define GAMEMANAGER(T) class T > ``` > > によって可読性が上がっているとは思えないし、メンテナンスが楽になっているとも思えないんですが。 これなら、 ``` class GameManager { //クラスの本体 }; ``` と書いたほうが余程わかりやすいと思います。