• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIXのC++で共通クラスを作ってみんなで使いたい。)

UNIXのC++で共通クラスを作ってみんなで使いたい

このQ&Aのポイント
  • UNIXのC++で共通クラスを作成し、みんなで使えるような形にする手順を教えてください。
  • クラスの定義部分を別ファイルにしてヘッダーファイルにするべきかどうか、共通クラスをどのような形で提供するべきかが分からない
  • 他の人のプログラムで共通クラスを使用するための手順が分からない

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> 私が何とか予想できる手順を以下に書きます。 やってみれば、すぐ分かることなのに。というのも、orange_pie さんが考えて いる通りで、実現できるから、です。 他のプログラム(コンパイル単位)で必要なのは、クラスの宣言です。なので、 class AAA{ public: void init(); void clean(); private: int elems; }; は、ヘッダファイル aaa.h に記述します。クラスのメソッドの定義は、aaa.cpp に 記述します。 #include "aaa.h" void AAA::init() { elems = 0; } void AAA::clean() { elems = 0; } で、その定義をコンパイルしてアーカイブに入れておきます。(知っているようですが)例えば、 % gcc -c aaa.cpp % ar -r libaaa.a aaa.o 使う側では、ヘッダファイルをインクルードするだけで、コンパイルが通ります。 #include "aaa.h" int main() { AAA *testBuf = new AAA(); testBuf->init(); return 0; } リンクする際には、先程作成したアーカイブが必要になります。 % gcc -o test_aaa test_aaa.cpp -laaa ね、質問に書いてあるままでしょう? # 細かい記述ミスなんかは訂正をしています

orange_pie
質問者

お礼

すてき、すてき!!(^○^) 分かりやすくて素敵!! ありがとうございます。早速やってみます。 <他のプログラム(コンパイル単位)で必要なのは、クラスの宣言です。>とか <ヘッダファイル aaa.h に記述します。>とか <クラスのメソッドの定義は、aaa.cpp に記述します。 >とか、 <使う側では、ヘッダファイルをインクルードするだけで、コンパイルが通ります。 >とか、 知りたい事の全てが、これらの言葉ですんなり理解できました。 「痒いところに手が届いちゃった」という感じです。 こんな長ったらしくて要点がまとめられない質問から 知りたい事を分かってもらえたのがとっても嬉しいです。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> 知りたい事の全てが、これらの言葉ですんなり理解できました。 解答をした甲斐があった、というもんです :-) 蛇足かもしれませんが、先の回答は、あくまでも、最初の取っ掛かり部分でしかないということを 言っておきます。 共通のクラスが増えてゆくことで、 ・あるクラスが別のクラスと関連を持っている ・Cインターフェースの関数 ・インライン関数 ・テンプレートクラス なんてことがでてくるので。 まあ、そのときには、また質問をしてみればいいんですけどね。 とりあえず、さっきの回答をひとつだけ補足しておきます。 インクルードファイルの二重読み込みの防止だけはしておいた方が良いでしょう。 インクルードファイルの内容を以下のような感じのマクロで括っておきます。 #ifndef AAA_DEFINED #define AAA_DEFINED class AAA { public: void init(); void clean(); private: int elems; }; #endif /* AAA_DEFINED */ /usr/include 配下のヘッダファイルなんかを見てみると、だいたいこんな感じ になっているのが分かると思います。

orange_pie
質問者

お礼

そうですね。 >共通のクラスが増えてゆくことで、 >・あるクラスが別のクラスと関連を持っている >・Cインターフェースの関数 >・インライン関数 >・テンプレートクラス >なんてことがでてくるので。 ム(-"-;)むむむ。。。。 >まあ、そのときには、また質問をしてみればいいんですけどね。 そうします。今は難しいことは後回しにして、基本的な使い方だけ 会得することにします。 >インクルードファイルの二重読み込みの防止だけはしておいた方が良いでしょう。 そうですね。いつもはやっていますが、今はまだヘッダーファイルを配布した時の事まで考えていませんでした。そうします。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A