• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++。社員データ入出力課題。)

C++初心者のための社員データ入出力課題

このQ&Aのポイント
  • C++初心者でも理解しやすい社員データの入出力課題を解説します。
  • 質問文章の内容をまとめて、C++初心者が困り果てるポイントや解決策を紹介します。
  • さらに、要約文を作成し、SEO対策に役立つハッシュタグも提案します。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

型を揃えるのが基本。 特に、ポインタとそうでないものは、揃えないとまず動きません。 「error C2679: 二項演算子 '=' : 型 'shain *' の右オペランドを扱う演算子が見つかりません (または変換できません)。」 ですが、 struct shain *sha; なのだから sha[n] は *(sha + n)→ struct shain 型 struct shain *nyuuryoku(void); なのだから、戻り値は strcut shain * 型 sha[n] = nyuuryoku(); は struct shain型 = strcut shain*型 一致しません。intとdoubleのような型変換のルールがあるものなら変換されますが、構造体とポインタと型変換するものはありません。これが「または変換できません」の意味。 C++では、演算子をオーバーロードして定義できるので、 「struct shain型 = strcut shain*型」の=演算を定義することもできます。ですが、今回のはその定義もありません。 これが「二項演算子 '=' : 型 'shain *' の右オペランドを扱う演算子が見つかりません」の意味です。 現行のshaの定義を生かすのなら、 struct shain *nyuuryoku(void); ではなく、struct shain nyuuryoku(void);です。中身もそれに合せて変更してください。 あるいは、これだけ大きな構造体なら、void nyuuryoku(struct shain *);でポインタ渡しするのが効率的です。 他にも、既に指摘のあったものとかも含め、「文法は正しいが期待通りに動作しない」 箇所がありますので注意しましょう。 ところで、課題はC++なのですか? コンパイラがC++なだけで、内容はCなのですか? 完全にCのプログラムで、C++の要素が無いのですが。 C++なら、色々変えた方がいいところがあります。mallocは使わない、とか。

OKaaaa
質問者

お礼

>struct shain型 = strcut shain*型 言われてみればこんなに簡単なことだったのですね・・・。 アドバイスいただいたvoid nyuuryoku(struct shain *); で書き直したところスラスラ行きました! 確認したところまだCの課題だったようです。これからC++の内容になるようです。てっきりC++の課題がすでに出ているものかと勘違いしてましたw

その他の回答 (2)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

nyuuryoku()内のshaAって、いったいどこ指しているんでしょうかね? # まぁ、こっちはコンパイル時の警告か実行時の不正終了か…ですが。 あと、realloc()の使い方が問題あり…です。 # realloc()失敗時の戻り値は何で、受け取っている変数が何か…ということに注意しましょう。 さらに…C言語の配列は0から始まりますのでご注意を。 >int n=1; >sha = (struct shain*)malloc(sizeof(struct shain)); >sha[n] = nyuuryoku(); でsha[n]ってどこになりますかね?

OKaaaa
質問者

お礼

ご指摘ありがとうございます。 reallocと配列を学習し直し、自力で修正することができました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その部分の左右両オペランドの型はどうなってますか?

OKaaaa
質問者

お礼

解決することができました!ありがとうございました。

OKaaaa
質問者

補足

エラー部は43行目の sha[n] = nyuuryoku(); です。

関連するQ&A