• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:その時によって異なる戻り値を返したい)

異なる戻り値を返す関数の作り方とは?

このQ&Aのポイント
  • 異なる戻り値を返す関数を作る方法について教えてください。
  • 特定の条件に応じて異なる値を返す関数を作成する方法を教えてください。
  • 返す値が異なる関数を作成する方法を教えてください。

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

  • ベストアンサー
  • ottimisto
  • ベストアンサー率72% (8/11)
回答No.6

■引数を使用したい構造体ポインタ型にして、その中に値を代入してみては? void Num(struct KOUZOUTAI * kouzoutai) { -~省略~ --case 0: ----kouzoutai->r_into = 0; ----break; --case 1: ----kouzoutai->r_double = 1.0f; ----break; --case 2: --・・・ -~省略~ } main() { --Num(&kouzou); } ■構造体のどの型に値を代入したかどうかは、 ・戻り値にcountを入れる ・引数ポインタに、countを入れる など、色々方法があるかと思います。

Null0lluN
質問者

お礼

ありがとうございます。 この方法は思いつきませんでした。 この方法でやってみようと思います

その他の回答 (6)

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

#3 のそれぞれを別個の関数にすればいいのでは?

Null0lluN
質問者

補足

最終手段としてそれを考えていますが、出来るだけ一つにまとめたいのです

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

見落してたんだけど「返り値として」配列を返すことはできません.

Null0lluN
質問者

補足

配列を返すという点だけだと、戻り値ではなく引数の参照渡しでしたっけ?(Num(int *A)みたいなやつ)それでやれば問題ないですよね?

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

力技で union.

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

これなら ・構造体Aを送信し、構造体Aの配列を受信 ・構造体Bを送信し、構造体Bを受信(別の値) ・構造体Cを送信し、構造体Cの配列を受信 のループにすればいいだけでは?

Null0lluN
質問者

補足

送受信する構造体の値は他の関数でも使いますが、訳あって関数にしたいのです。

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

void *で渡してキャストして、ってできなくはないでしょうけど。 それよりは、そんな設計自体をやり直した方がいいと思います。 どんな理由があって、「異なる型の構造体を返す」機能が必要なのでしょうか?

Null0lluN
質問者

補足

ネットワークプログラムで 1ループ目は構造体Aを送信し、構造体Aの配列を受信 2ループ目は構造体Bを送信し、構造体Bを受信(別の値) 3ループ目は構造体Cを送信し、構造体Cの配列を受信 4ループ目は1ループ目と同様 5ループ目は2ループ目と同様 以下略 というような感じにして一つの関数に纏めたいのです void *でキャストは思いつきませんでした。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>実際にはそれぞれ違う構造体を返したい 違う構造体というのは、値が違う構造体でしょうか。 それとも、型が違う構造体でしょうか。

Null0lluN
質問者

補足

型が違います。 また、構造体の中身も型だけでなく変数の数も違います

関連するQ&A