Задача: создать класс «ячейка». Он имеет размеры (длину; длину и ширину; длину, ширину и высоту — в зависимости от количества измерений) и объём (1*1*длина; 1*длина*ширина или высота*длина*ширина, опять же в зависимости от количества измерений). В конструктор передаётся vector с размерами. При этом автоматически считается объём.
Моя реализация:
class Cell
{
vector<double> dimensions; //массив размеров ячейки по осям (r)
double volume; //объём (ν)
void calcSize(double r)
{
volume*=r;
}
public:
Cell(vector<double> inputDimensions) {
dimensions=inputDimensions;
volume=1;
for_each(dimensions.begin(), dimensions.end(), calcSize); //это строка 44
}
//...
};
Ошибка такая:
./main.cpp: In constructor ‘Cell::Cell(std::vector<double, std::allocator<double> >&)’:
./main.cpp:44: ошибка: нет соответствующей функции для вызова ‘for_each(__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, <unresolved overloaded function type>)’
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.3/../../../../include/c++/4.4.3/bits/stl_algo.h:4194: замечание: претенденты: _Funct std::for_each(_IIter, _IIter, _Funct) [with _IIter = __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, _Funct = void (Cell::*)(double)]
Что не так? Использовать for не хочется. Не модно.