![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
http://msdn.microsoft.com/en-us/library/k13k85ky …
コンパイラベンダ固有のキーワードを使わせるかどうかを切り替えるなどです。
実際にMicrosoft ATLではそういった手段が取られています。
#define DEFINE __declspec(novtable)
class DEFINE Hoge
{
};
コンパイラベンダ固有のキーワードを使わせるかどうかを切り替えるなどです。
実際にMicrosoft ATLではそういった手段が取られています。
#define DEFINE __declspec(novtable)
class DEFINE Hoge
{
};
No.3
- 回答日時:
もう少し工夫して、ひとつのファイルの中でbase classと、その継承class
を書いてしまうなんてこともできますが。でも、メリットは無いですね。
---------------------------------------
// Hoge.h
#include <stdlib.h>
#include <stdio.h>
#ifdef DEFINE
#define BASE
#else
#undef BASE
#define DEFINE NewHoge
#endif
class DEFINE
#ifndef BASE
:
#endif
Hoge
{
public:
#ifdef BASE
Hoge() {}
~Hoge(){}
void Method() { printf("BaseMethod\n");}
#else
DEFINE(){}
~DEFINE(){}
void Method() { printf("ChildMethod\n");}
#endif
};
---------------------------------------
// Main.cpp
#define DEFINE
#include "Hoge.h"
#undef DEFINE
#include "Hoge.h"
int main(int argc, char* argv[])
{
Hoge hg;
hg.Method();
NewHoge nhg;
nhg.Method();
return 0;
}
No.1
- 回答日時:
継承が楽になるから。
最初に、基本クラスとなるソースに
#define DEFINE
class DEFINE Hoge{
};
と書いておきます。
この基本クラスのソースを元に「Hogeから継承したNewHogeクラス」を作る場合
・ソースを丸コピーする
・基本クラスから変えた関数だけ残して、基本クラスそのままの関数を全部削除する
・「#define DEFINE」を「#define DEFINE NewHoge :」に書き替える
って作業だけで済みます。
基本クラス
#define DEFINE
class DEFINE Hoge{
};
は、コンパイルすると
class Hoge{
};
になります。
継承クラス
#define DEFINE NewHoge :
class DEFINE Hoge{
};
は、コンパイルすると
class NewHoge : Hoge{
};
になります。
どうです?#defineの所を1行だけ書き替えるだけで、ソース上の「class Hoge」が「class Newhoge : Hoge」に変わります。便利でしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Arduino UNO のC言語 2 2023/04/18 19:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- C言語・C++・C# マクロ関数 #define の効果は何ですか? わかりやすく教えて下さい 5 2023/04/05 18:14
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
無名パッケージからのインポート
-
関数内の変数に<summary>コメン...
-
C# インターフェイスの実装
-
アップキャスト、ダウンキャス...
-
Eclipseを用いたJARファイル作...
-
SwingでgetContentPaneのエラー...
-
java-別クラスの変数の使い方を...
-
super.paint(g)を呼び出す意...
-
継承したクラス側のクラス名の取得
-
dynamic_castの必要性
-
Java リフレクションについて
-
C#でほかのファイルにある自作...
-
C# 子->親の通知にBeginInvoke...
-
JSPでbeanプロパティ(配列)を...
-
C#にて別クラスの関数を使いたい
-
C++でfriendクラスにしているの...
-
範囲外の数値を代入したらエラ...
-
型Containerのメソッドadd(S...
-
javaのスーパークラスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クラス間でのデータ参照
-
範囲外の数値を代入したらエラ...
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
C#にて別クラスの関数を使いたい
-
java-別クラスの変数の使い方を...
-
C++でfriendクラスにしているの...
-
a href="..." とServlet
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
Java リフレクションについて
-
import と extends について
-
C#でほかのファイルにある自作...
-
C#のクラスライブラリでメッセ...
-
Java
-
アップキャスト、ダウンキャス...
-
無名パッケージからのインポート
-
違うクラスからの変数の共有化
-
SwingでgetContentPaneのエラー...
-
ひとつのファイルにクラスは1つ?
おすすめ情報