• 締切済み

汎用性のある構造体

c言語で構造体のメンバに関して構造体の定義を操作せずにメンバを操作したいのですが(ソースから)その実現は可能でしょうか? よろしくお願い致します

みんなの回答

回答No.2

> ある構造体を作ったとしてそのメンバに > int c > を追加したいのですが、ヘッダにメンバを書き加えることなくソースから追加できないでしょうか ソースから追加? C++なら: // 元々の構造体 struct original { int x; int y; }; // 上記に変更を加えずにzを追加 struct mystruct : original { int z; };

f_attck
質問者

お礼

御回答ありがとうございます。 大変勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

なにをしたいのかわかりません。 具体例を挙げていただけませんか?

f_attck
質問者

補足

ある構造体を作ったとしてそのメンバに int c を追加したいのですが、ヘッダにメンバを書き加えることなくソースから追加できないでしょうかという質問なのですが、上記のコメントで御理解頂けたでしょうか?

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

関連するQ&A

  • 構造体変数がないとメンバ操作できないのはなぜ?

    C言語の構造体に関して質問がありますが、structで型を作成して、構造体変数にてメンバの代入・参照をする。ということなんですが、なんでメンバ操作には構造体変数からでないといけないのでしょうか? 直接、型枠にてメンバ操作をすれば良いのに、なぜ構造体変数から操作しないといけないのでしょうか? 「クラス」や「オブジェクト」みたいに、一々ゼロから作成したり、コピペで作成しなくても済むように、このような形になっているのでしょうか? 回答の方よろしくお願いします。

  • FILE構造体がどのように定義されているか

    こんにちは。 C言語初心者です。 今、FILE構造体について学んでいるのですが、stdioでFALE構造体が どの用に定義されているか調べなさい、という問題がありました。 それは、どのように調べればいいのでしょうか。 また、どのように定義されているのでようか。

  • 構造体のポインタに関する質問

    構造体の中にポインタ変数を置いたのですが、代入時に members.*pstack=*pushdeta; と記述すると、 エラー E2451 C:\WINDOWS\デスクトップ\作成\s\ds.cpp 85: 未定義のシンボル pstack(関数 stack::push(int *,char *) ) とエラーが出てしまいます ちなみに↓がその構造体です struct stack_member{ int *pstack; char *chpstack; int *pfornt; }members; このエラーの解決方法がわかる方が居たら教えてください (*を取れば、エラーは出ない) ちなみにこれを書いた言語はC++です

  • 構造体について

    linuxのソースコードを呼んでいる者ですが、構造体について、実際に使う方法が分かりません。 ソースコードを少し書き換えて改良したいのですが、構造体が定義されているので、それをそのまま引用しないといけないので分からなくなってしまいました。 例えば、それぞれの関数のなかで最初の変数宣言の部分にstructが付いているものもあれば、付いていないものもあります。 この差はなんなのでしょうか?

  • 構造体と構造体型の変数宣言箇所

    はじめてborlandC++builder6でプログラムを作っているのですが、構造体と構造体型の変数宣言箇所についてわからないことがあるので質問させてください。 あるフォームのソースファイル(○○○.cpp)内の関数で、自分で定義した構造体を使う場合、ヘッダファイル(○○○.h)に構造体を定義すると、関数内で「変数が未定義」エラーになってしまいます。一方、ソースファイル(○○○.cpp)の先頭に書けばエラーになりません。  ヘッダファイルに変数定義した場合とソース内の先頭に構造体と構造体型変数を定義するのでは何が違ってくるのでしょうか?

  • 構造体で・・・・

    構造体は配列を使用せずメモリ領域を獲得する関数を使用すること、 *構造体内部のメンバ名には配列を用いて良い。  という、条件があるのですが場合はどのようにすればよろしいでしょうか? どなたか教えてください。 構造体は以下のようになってます。 /*構造体の定義*/ struct seiseki{   char name[20];   int eig;   int suu;   int kok;   char rank[3]; };

  • 構造体の静的な初期化

    構造体の静的な初期化で、初期化が書かれていないメンバーは、 どうなるのでしょうか。。? たとえば・・・ // 構造体の宣言 strcut MY_STRUCT {    int data1 ;    int data2 ;    int data3 ;    int data4 ; } ; // 変数宣言&初期化 static strcut MY_STRUCT st = {    .data1 = 100,    .data3 = 300 } ; ネットで調べると、 初期化で指示されていないメンバーは0に初期化される、 という記述も一つだけ見つけたのですが・・・これはC言語(C99)の仕様でしょうか? それともコンパイラ依存の仕様でしょうか?

  • 構造体について

    プログラムを勉強し始めて3日目の初心者なんですが、構造体を使う意味がいまいちよくわかりません。 たとえば、構造体の定義が { 縦の長さ 横の長さ 重さ } だとしたら、それを使うためにも { 縦の長さ= a 横の長さ= b 重さ= c } と同じものを2回書く必要があり、なんだか冗長な感じがしてしまいます。 それとも、定義で決めたデータをわかりやすく、間違えないようにするためですか? 本当に未熟で仕組みや使い方もわからない自分の質問なのですが、答えていただければうれしいです。

  • 配列とその要素数をメンバにもつ構造体

    C言語では,配列を引数とするときに,合わせて要素数を渡さなければいけないといわれます. そこで,配列とその要素数をメンバにもつ構造体を定義して,これを要素数つき配列のように扱えば,引数として渡す場合には,この構造体を渡すだけでよいと思うのですが,このような用法は一般的に用いられているでしょうか. 単純なアイデアだと思うんですが,あまり紹介されているのを見たことがありません. もしあまり用られない用法であれば,その理由を教えてください. 現在,プログラムを書いているのですが,引数の多さに閉口しており,上の考えで,引数を減らしたいと考えています.  よろしくお願いいたします.

  • sqliteの構造体

    SQLiteを使ったメールソフトを作っています。 sqliteの構造体 sqlite3_stmt の宣言は見つかるのですが 構造体の内容の定義してあるものが見つかりません。 sqlite3.h, sqlite3.c を探したのですが見つかりませんでした。  この構造体が見つからないと そこに登録してある値が使えません。 それとも、 この構造体は定義されていなくて これを当てにしないで プログラムを組まなくてはいけないのでしょうか? 使わなくても動かせそうですか。。。 お分かりの方、よろしくお願いします。