質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

引数付きコンストラクタを含むクラスのインスタンスを、新たなクラスのメンバにしたい

yacht_take
yacht_take

総合スコア1

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0リアクション

0クリップ

246閲覧

投稿2022/05/30 06:10

引数付きコンストラクタを含むクラスのインスタンスを、新たなクラスのメンバにしたい時はどのようにすればよいでしょうか。

C++初心者です。線形計画問題を解く数理モデルを、IBM社のCPLEXを用いて開発しようとしています。その際、CPLEX側に用意してあるIloModelクラスオブジェクトを作る必要があり、このクラスのコンストラクタには引数付きコンストラクタが使用されています。具体的には、IloEnvクラスのオブジェクトを引数に設定するべきとされています。例えば、IBMから公表されているサンプルコードの冒頭は次のようになっています。

C++

int main (int argc, char **argv) { IloEnv env; try { IloModel model(env);

解きたいモデルの都合上、線形計画モデルを大量に作る必要があり、モデル生成の段階をクラス化し、IloModelクラスのインスタンスを自作のLP_Modelクラスのメンバとしたいのですが、どのようにすれば良いのかわかりません。以下のようなコードを試してみたのですが、うまくいきません。

C++

class LP_Model { public: IloModel model(); LP_Model(IloEnv env); }; LP_Model::LP_Model(IloEnv env) { model(env); }

このような場合、どのようにするべきなのでしょうか。CPLEX側の問題ではなく、C++の基本文法についての認識不足だと感じております。基本的な質問で恐縮ですが、ご回答いただきますと幸いです。よろしくお願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

BeatStar

2022/05/30 06:40

> CPLEX側の問題ではなく、C++の基本文法についての認識不足だと感じております だったらなんで入門書なり入門サイトなりを読んで学習しないのでしょうか? 「微積分を学んでいます。ですが足し算すらわかっていないので微積分を理解できません。誰か教えてください」ぐらいの質問です。 質問者さんならどういうアドバイスをしますか? 私なら「いや、今は微積分よりも算数、特に足し算をやりましょう。今のあなたにはハードルが高すぎますよ」と言いたくなります。簡単な方の足し算すら満足に理解できていない人に微積分を説明するとなると相当骨が折れますよ。 足し算・引き算から教えないといけないため、時間も労力も相当使います。 さらにわからない原因が「足し算すらわかっていないこと」がわかっているのにそれを解決しようとすらしていない人にまともに教えても理解できるとは到底思えません。 理解する気が無いからやらない。やる気があるならせめて理解できなくとも足し算からやるはずです。 それを「はぁ? なぜ俺様が努力せにゃならんのだ?」と暴言を吐くのがそういうタイプに多いです。(別に質問者さんがそうだとは言ってません。そういう傾向が強い人が多いというだけです) まったく原因がわからないのならやむを得ませんが原因が分かっているのだからそれをやるべきでは? 「C++ 入門」とかでggればいくらでも出てきます。しかも無料で。 そのサイトを片っ端から読んでいけばわかるはずですよ。それでもわからないのなら質問を工夫して質問してみてください。
BeatStar

2022/05/30 06:51

ちなみに罵倒しているわけではなく、発破をかけているつもりです。(質問者さんがこれで頑張ってくれると嬉しいんだけどなぁ…その場合はヒントは上げてもいいとおもっているけど…)
yacht_take

2022/05/30 07:14

一応、入門書は2冊ほど通し、ネット記事等も参照してみたのですが、何分容量が悪くわからなかったため質問をした次第です。ご指導感謝いたします。
BeatStar

2022/05/30 08:47

それなら「どのように調べたか」とか「どこが不明瞭なのか」とか「自分なりの解釈」とかを書くといいですよ。そうするだけでもだいぶ印象が変わりますよ。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。