それで、Stephen Prata の本から C++ を学んでいて、1 つの演習を行いたいと思っています...問題は次のとおりです。
次のようなクラス内で、構造体内で std::valarray を使用したい:
class Wine
{
private:
struct Pair
{
std::valarray<int> valYear;
std::valarray<int> valBottlesNum;
};
int m_yearNum;
Pair m_numericData;
public:
Wine();
Wine(int, const int[], const int[]);
};
そして、メンバー初期化リストを介してこれを初期化します。
Wine::Wine(int yearNum, const int year[], const int bottlesNum[])
: m_yearNum(yearNum),
m_numericData.valYear(yearNum, year),
m_numericData.valBottlesNum(yearNum, bottlesNum)
{}
しかし、それはうまくいきたくないだけです。どういうわけか、コンパイラはこの "." を好みません。初期化子リスト内のm_numericData構造体のメンバーにアクセスします。
Pair構造体を放棄して、単純なクラス メンバー変数としてvalYearとvalBottlesNumを実行し、次のように初期化することもできます...
Wine::Wine(, int yearNum, const int year[], const int bottlesNum[])
: m_yearNum(yearNum), m_valYear(yearNum, year), m_valBottlesNum(yearNum, bottlesNum)
{}
しかし、私は本当にこのようなものを解決する方法を知りたい.
よろしくお願いします!