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

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

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

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

C++

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

Q&A

解決済

1回答

347閲覧

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

yacht_take

総合スコア1

コンストラクタ

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

C++

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

0グッド

0クリップ

投稿2022/05/30 06:10

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

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

C++

1int 2main (int argc, char **argv) 3{ 4 IloEnv env; 5 try { 6 IloModel model(env);

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

C++

1class LP_Model 2{ 3public: 4 IloModel model(); 5 6 LP_Model(IloEnv env); 7}; 8 9LP_Model::LP_Model(IloEnv env) 10{ 11 model(env); 12}

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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

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

回答1

0

ベストアンサー

メンバイニシャライザを使います。

c++

1// 宣言 2class LP_Model { 3 .... 4 IloModel model; // ()は不要 5 6 7// 初期化 8LP_Model::LP_Model(IloEnv env) 9 : model(env) 10{ 11}

投稿2022/05/30 06:26

int32_t

総合スコア20878

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yacht_take

2022/05/30 06:38

ありがとうございます。用語すらわからず、調べても有意義な情報が出てこなかったため難儀しておりました。大変助かりました。
fana

2022/05/30 08:22

用語がわからないときは,とりあえず「C++ 引数 コンストラクタ メンバ」とか,手元の物事を表現するのに出てきそうな単語を並べて検索してみると良いのでは.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問