次のようなプログラムを作ろうとしています。
あるクラスComponentは
DIM(整数)次元(要素数)のdouble型配列と
ここで DIM は別のところでconstで宣言されています。
(他にもいくつか変数を持っているのですが話に関係ないので割愛します)
とりあえずこんな感じにしたいです。
class Component{
public:
double x[DIM];
Component(double x,double y,double z, ,,,,,); //コンストラクタ
}
ここでコンストラクタComponentは引数にDIM個の実数をとり、たとえば
DIM = 3のとき
Component obj(1.0,2.0,3.0);
と宣言したら
obj.x[0]=1.0
obj.x[1]=2.0
obj.x[2]=3.0
となるようにしたいのです。
むろん代入すること自体は代入すればよいのですが
外で宣言されているDIMによってコンストラクタの引数の数が変わってしまいます。
こういう時はどのような解決策があるでしょうか。
今書いたのと全然違うやり方でもかまいません。
(ただ何個も何個もコンストラクタをオーバーロードするのは避けたいです。
いろんなDIM次元で実験がしたく、きりがありません)。
よろしくお願いいたします!
No.2
- 回答日時:
こういうのは、
template <std::size_t DIM>
class Component
{
public:
template <class InputIterator>
Component(InputIterator first, InputIterator last);
...
};
とするのが常套手段ではないでしょうか?
そういうやりかたがあるのですか。
sizt_t DIMというのはどういう意味があるものなのでしょうか。
もう少し勉強が必要なようです。ありがとうございました!
No.1
- 回答日時:
引数の値はそれぞれ独立して渡す必要はありますか?
でなければ、あまりスマートとは言えませんが、
引数の要素は一旦配列に格納し、ポインタで配列の先頭アドレスと要素数を渡し、
コンストラクタ内で要素数分の領域を確保して引数で渡したポインタに紐漬けられた値を代入すればいいのでは?
ついでに要素数もメンバ変数に保存しておけば、以降のループ処理(あれば)のリミッタとしても使用できますよ。
あと、デストラクタでの領域解放は忘れずに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) excel2013 色付きセルの値合計 3 2023/02/28 11:48
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
テキストファイルから文字列を...
-
配列を使わずに、変数名を動的...
-
Excel、VBAのユーザーフォーム...
-
配列で格納したものをmsgboxで...
-
先頭アドレスとは何ですか?
-
Visual C++で配列を動的に確保...
-
複数のボタンを配列で扱う方法...
-
C言語 変換指定%sについてです。
-
unsigned char配列への入力の仕方
-
VB.NETでテキストボックスをコ...
-
擬似コード 長さがmの配列でな...
-
【速いブラインドタッチ】手を...
-
RGB値を画像(PNG・BMPJPEGなど)...
-
C言語でcharの足し算
-
メモリの初期値
-
複数の選択範囲の行番号を個別...
-
【C言語】配列の中に配列を入れ...
-
VB.NET 構造体の配列の検索機能...
-
配列内の文字間を排他的論理和...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
C# 配列の変数宣言について。
-
テキストファイルから文字列を...
-
unsigned char配列への入力の仕方
-
ExcelVBAで質問です。離れた二...
-
配列の参照渡しで型が一致しま...
-
パイソンの
-
C# Listを使わずに2次元配列の...
-
C言語で特定列だけを抽出して配...
-
複数の選択範囲の行番号を個別...
-
【C言語】配列の中に配列を入れ...
-
メモリの初期値
-
VBで構造体の配列を関数に渡す...
-
Excel、VBAのユーザーフォーム...
-
2次元配列を戻り値とする関数?
-
配列をEraseしてもメモリが開放...
-
【速いブラインドタッチ】手を...
おすすめ情報