所以我正在从 Stephen Prata 的书中学习 C++,我想做一个练习...所以问题是这样的:
我想在结构体中使用 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)
{}
但我真的很想知道如何解决这种问题。
提前致谢!
最佳答案
您可以将各个初始化移动到构造函数的主体中:
Wine::Wine(int yearNum, const int year[], const int bottlesNum[])
: m_yearNum(yearNum)
{
m_numericData.valYear = std::valarray<int>(yearNum, year);
m_numericData.valBottlesNum = std::valarray<int>(yearNum, bottlesNum);
}
或者,为 Pair
提供其自己的构造函数。
关于c++ - 通过成员初始化列表初始化结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29264977/