• 締切済み

複数クラスで共通の関数、変数の呼び出し方

tsuduki999の回答

回答No.5

メモリの使用量ですが、大差ないです。 この場合は、デザイン(設計)を重視するべきじゃないですかね。 なんなく、継承とかよりも、単独のオブジェクトとした方が よさげな予感はします。 あとは、シングルトンなり、コンポジットなり用途次第で。。。 ちなみに、プログラム実行時には、 当然実行ファイル自体のファイルサイズ分メモリを使用しますから C++を選択する時点でメモリの使用量はおさえられないと考えた方がよいです。 ということで、メモリ使用量を抑えたいというのならば、 Cで、ヒープ使うのが一番無難じゃないですか? # s/レジスタ/レジストリ/ とか思ってみる今日この頃

fujtomo
質問者

お礼

クラスの継承は共通の動作をする関数が複数のクラスで必要な場合に有効なようですね。 よくよく考えてみたら、それぞれのクラスでレジストリの読み書きという処理は同じですが、レジストリの保存先や、読み込んできたデータを格納する構造体が違っているため継承は今回のプログラムには向いていないみたいです。 CだとMFCのような画面構成の作成ができない為、ちょっとCには出来ないです。。 ご回答ありがとうございました。

関連するQ&A

  • クラスのメンバ関数を別ファイルで定義したときのバグ

    C++ においてヘッダファイルで宣言したクラスのメンバ関数を別のソースファイルで定義して、コンパイルするとうまくいきません。エラーは出ないのですが、同名の何もしない関数としてコンパイルされているようなのです。クラスのメンバ関数を宣言したのと同じヘッダに書くとちゃんとコンパイルされます。 どうしてそうなるのか、いまいち原因がわかりません。

  • 複数のクラスで共通した関数を使いたい場合

    C++なのですが、複数のクラスで共通して使いたい関数がある場合、親クラスに共通したい メンバ関数を作り、その子として複数のクラスを作るのが良いのでしょうか? それ以外の方法だとクラスの外でstatic宣言した関数であればクラス内で使えるようでした。 (static宣言しないとコンパイルエラーとなりました) しかし以下のサイトにあるように「共通関数継承のデメリット」があるようで推奨していないようです。 ttp://d.hatena.ne.jp/katzchang/20110216/p1 ttp://blog.jnito.com/entry/20110217/1297896355 なお、自分には上記サイトの内容は難しくて理解できませんでした。 つまり、「数のクラスで共通して使いたい関数がある」場合、上記サイトはどうすればいいと言っているのでしょうか? よろしくお願い致します。

  • クラス内のメンバ変数について

    クラス内のメンバ変数について Javaで作成したクラスのメンバ変数なのですが、クラス内のメンバ変数名の 一覧を取得する方法を探しています。 昔、仕事でやったような気がするのですが、忘れていました。 やりたいことは、メンバ変数のString型のメンバにtrimを行いたいのですが、 一つずつ名称を指定したくなく、どのクラスでも共通処理を行いたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 複数ファイルによる共通の外部変数定義について

    初歩的な質問なのですが、今各関数をファイルごとに分けて記述しようとしています。 ここで詰まっているのでできればご教授お願いします ファイル構成は プログラムファイル main.cpp sub.cpp ヘッダーファイル  myheader.h(main.cppとsub.cpp両方でインクルード) ヘッダーファイルには両方のプログラムファイルで使う変数が定義してあります。 それでmain.cppとsub.cpp両方で同じ変数を使いたいのですがコンパイルエラーが発生してしまいます。 内容はsub.obj側で「i(共通のループカウンタ)はmain.objですでに定義されています」というものです。 とにかく私のやりたいことはヘッダーに外部変数を定義して両方のプログラムファイルで使いたいというものです。 もしかしたらファイルを分けるにも何か設定が必要なのでしょうか? 私はただ[プロジェクト]→[プロジェクトに追加]→[新規作成]でソースファイルを作っているだけなんですが・・・ 上記の状態を回避する方法はあるのでしょうか?

  • クラスのメンバ関数の呼出しについて

    こんにちは。 初心者ですが、よろしくお願いします。 MFCを使用してダイアログベースのアプリケーションを作成しています。 <ヘッダ> class Sample : public CDialog { (略) public: int SampleA(CString); (略) <ソース> UINT SampleB(LPVOID pParam) { int n; n = Sample::SampleA(CStringA) ←エラー return 0; } メンバ関数ではない、SampleBから、上記のように呼出すと、「静的でないメンバ関数の中で呼び出しが正しくありません。」というエラーが表示されてしまいます。 ヘッダ内のメンバ関数宣言をstaticにすれば問題は解決できるのですが、このやり方しかないのでしょうか。 よろしくお願いします。

  • クラス間の変数について

    よろしくお願いします。 VC++のウィザードが自動生成するChildFrm.cpp内のクラスAとMainFrm.cpp内のクラスBの間で共通の変数int xxxを使いたいのですが、どこに宣言すれば良いのでしょうか? それともクラス間では、そのようなことは出来ないのでしょうか? ご存知の方教えてください。

  • クラスの外で宣言した変数について

    初心者的な質問ですみません。 クラスの外で宣言した変数をそのままクラス内で使うことはできないのでしょうか? publicのメンバーにポインタの変数を作ってそこにアドレス指定するか、setするメソッドを作るしかないのでしょうか? もしクラスの外で宣言した変数をそのままクラス内で使えないのは、スコープ的にどういう理由で使えないのか教えて下さい。 クラス内クラスだと子クラスは親クラスの変数を参照できますが、それとは違うのでしょうか? どうぞよろしくお願い致します。

  • 共通クラス作成について

    VisualStudio.NET2003 C# で開発をしている、超初心者です。 共通クラスを作成することになり、どのようにコーディングしてよいのか途方にくれております。StreamIOなどを使用すればよいところまではわかったのですが、共通クラスを作成したことがなく、どのように書けばよいのか全くイメージがわきません。処理としては、ファイル作成(ファイル名は日付)、書き込み(ヘッダ部分(固定)とSQLデータ一覧)から、ファイルクローズです。特に書き込みの部分でSQLデータをメゾットにどのように渡したらよいのかわかりません。 皆様、お忙しいところ申し訳ありませんが、なにとぞご教授よろしくお願いいたします。

  • クラスと関数群のうまい使い方

    今、クラスを使ってPHP(今はPHP4を使っています)によるWEBアプリケーション(といっても、そんなに大げさなものではないですが)を作成しながら、クラスの使い方を勉強しています。 ある程度クラスを使うことには慣れてきたのですが、悩んでいることがあります。 今までは、別ファイルによく使う関数群をまとめて、呼び出す形でやっていました。 それを、クラスを使ってやるようになってから、それぞれのオブジェクトでの処理はそのクラスにまとめることで、すっきりとなりました。 が、全てのクラス(もしくはいくつかのクラス)で共通して使用する処理(文字列操作など)はどうすればいいのかと悩んでいます。 それぞれのクラスに同じ処理を書くのは、クラスを使う意味がない気がするので、避けるべきだと考えていています。 そこで、今までのように共通の処理を関数群にして、クラスファイルでインクルードして使うか、共通処理をもつクラスを作って使用するクラスの中でインスタンスを作成して処理関数を呼び出すか・・・とどちらがいいのでしょうか? ただ、関数群をまとめたファイルを作ると、他にクラスを使う意味がないような気もするし、共通処理をまとめたクラスを作ってその処理を利用するクラスでインスタンスを作るのは、処理的に重くなりそうでまたクラスの本来の意味からすると共通処理をまとめたクラスというのがおかしい気もするし。 根本的にクラスの作り方がまずいのかもしれませんが、良いアドバイス等あればご指摘下さい。 長文になりましたが、よろしくお願いいたします。 追伸) PHPでのクラスの学習についていい本やサイトなどあればそちらもお教え願えればと思います。

    • ベストアンサー
    • PHP
  • VC++6.0ですが、違うクラスで同じ変数を利用?

     VC++6.0ですが、ダイヤログボックス内のボタンを押すともうひとつのダイヤログボックスが起動するプログラムを作っています。このときClassViewでみるとクラスも最初のダイヤログボックスのクラスと新しいダイヤログボックスのクラスがそれぞれできています。  ひとつのクラス内の関数で共通に変数を利用したいときは、関数の外に static char xxx[100]; などを書けば、複数の関数でその変数を利用できましたが、違うクラスで共通に利用したい変数はどのようにして作ればよいのでしょうか。 よろしくお願いします。