現在、マトリックスクラスを初期化するのにstd::initializer_list<std::vector<double>>
を使用しています。派生クラスの値を初期化する方法は?
class matrix{
public:
matrix(std::initializer_list<std::vector<double>> list: row(list.size(),
col((*list.begin()).size()), matrix(list){}
private:
std::vector<std::vector<double> matrix; // I am planning to use single contiguous memory in future
};
これは私が行列
matrix mat = {{1,2,3},{4,5,6}};
を初期化する価値することができます今、私はベクトルのためにやりたいことベクトル(数学)
class Vector: public Matrix{
Vector(std::initializer_list<double> list):Matrix(list){}
// Vector(std::initializer_list<std::vector<double>> list):Matrix(list){}
};
を作成するために行列を使用するには、
ましたVector vec = {1,2,3};
が、私は私はしたくない
Vector vec = {{1,2,3}};
で立ち往生していますベースにstd::initializer_list<double>
を渡すことはできませんので、。
この状況を処理する方法はありますか(initializer_listを削除して全く別のものを使用します)、またはinitializer_listを付ける必要がありますか?
私はintializer_listが実行時に初期化を行うと思いますが、私はhereから読みます。コンパイル時に初期化を行う方法はありますか?
だから私はこれを試して、それは動作します!私はこれが実行時の初期化されていることを知っている..あなたはどのようにコンパイル時にこの初期化を行う任意のリソースを指すことができますか?コンパイル時の初期化がこの方法で可能かどうかはわかりませんが、ちょうど興味がありました – pokche
@pokcheわかりません。たぶんテンプレート付きのもの。 – Marcin