Я пытаюсь реализовать класс, содержащий valarray и 2 ints, которые определяют его размер. Мой файл HPP выглядит примерно так:Не удается инициализировать valarray как частный член класса
class Matrix
{
public:
// Constructors
Matrix();
Matrix(int width, int height);
// Mutators
void setWidth(int width); // POST: width of the matrix is set
void setHeight(int height); // POST: height of the matrix is set
//void initVA(double width);
// Accessors
int getWidth(); // POST: Returns the number of columns in the matrix
int getHeight(); // POST: Returns the number of rows in the matrix
// Other Methods
//void printMatrix(const char* lbl, const std::valarray<double>& a);
private:
int width_;
int height_;
std::valarray<double> storage_;
};
Однако, когда я пытаюсь инициализировать valarray на конструктор, как это:
Matrix::Matrix(int width, int height)
{
width_ = width;
height_ = height;
storage_(width*height);
}
Я получаю сообщение об ошибке:
ошибка C2064: термин не вычисляется до функции, принимающей 1 аргумент
The documentation говорит, что я могу объявить valarray не менее чем 5 различными способами, но работает только конструктор по умолчанию. Я везде искал, но не нашел никакой полезной информации. Любая помощь будет оценена по достоинству.
Используйте список инициализаторов. То, что вы пытаетесь сделать, недействительно, поскольку a) недействительный синтаксис b) элемент уже инициализирован в этой точке. –
@LuchianGrigore Синтаксис действительно действителен, он просто ссылается на 'operator()' перегрузка, которая не существует. (И это, вероятно, не будет делать то, что OP хочет, если он существует.) – cdhowie
@cdhowie, вы правы, я имел в виду недействительный синтаксис инициализации. Я вижу, как я был слишком краток. –