• ベストアンサー

インスタンス化したクラスを関数に渡したい

class GAMMA { public: //コンストラクタ GAMMA(); int SetGammaValue(int value) { gamma_kind=value; return 0; } private: int gamma_kind; }; GAMMA gamma;//インスタンス化 この後に、このインスタンス化した「gamma」を Function(gamma)の様に関数渡しをしたいのですが、 うまくいきません。 そもそもclassは関数渡しできるのでしょうか? 構造体は関数渡しできるのは確認済みなのですが・・・。 関数部分は Function(class gamma) { } の様にすればいいのでしょうか?

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

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>int SetGammaValue(int value) >return 0; これはかなり奇妙だと思いますよ。 値渡しにするか(適宜コピーコンストラクタ作る)、ポインタ(あるいは参照)で渡すかはありますが、普通はポインタ/参照で渡すでしょうね。 class Gamma { ... }; // まぁ一般的 void someFunc1(Gamma* g) { ... } // 関数内で書き換えない場合はこっちがおすすめか void someFunc2(const Gamma& g) { ... } int main() { Gamma g; someFunc1(&g); someFunc2(g); } ちなみにC++ではクラスと構造体はデフォルトのアクセス修飾子が違うだけで機能は同じです。構造体をクラスに継承することもできます。

参考URL:
http://www.geocities.jp/ky_webid/cpp/language/016.html
ringist
質問者

お礼

こんにちは! 情報ありがとうございます! まだC++に慣れていなくて・・ アドバイスありがとうございました!

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

>そもそもclassは関数渡しできるのでしょうか? 「関数渡し」とは? 値渡しがしたい場合はコピーコンストラクタを用意して下さい。 >関数部分は >の様にすればいいのでしょうか? void Function(GAMMA g) { } のようにしておいて下さい。

ringist
質問者

お礼

こんにちは! 情報ありがとうございます! まだC++に慣れていなくて・・ アドバイスありがとうございました!

関連するQ&A