- ベストアンサー
インスタンス化したクラスを関数に渡したい
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) { } の様にすればいいのでしょうか?
- みんなの回答 (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++ではクラスと構造体はデフォルトのアクセス修飾子が違うだけで機能は同じです。構造体をクラスに継承することもできます。
その他の回答 (1)
- koko_u_u
- ベストアンサー率18% (216/1139)
>そもそもclassは関数渡しできるのでしょうか? 「関数渡し」とは? 値渡しがしたい場合はコピーコンストラクタを用意して下さい。 >関数部分は >の様にすればいいのでしょうか? void Function(GAMMA g) { } のようにしておいて下さい。
お礼
こんにちは! 情報ありがとうございます! まだC++に慣れていなくて・・ アドバイスありがとうございました!
お礼
こんにちは! 情報ありがとうございます! まだC++に慣れていなくて・・ アドバイスありがとうございました!