Всем привет.
Пишу лабу на тему функциональные объекты. Не могу вызвать функциональный объект с передачей параметров: контейнер array и число int .
При компиляции выпадает ошибка:
..\Lab_6\main.cpp: In function 'int main()':
..\Lab_6\main.cpp:73:61: error: wrong number of template arguments (2, should be 1)
for_each( (*it).begin(), (*it).end(), Abstract (j) );
^
..\Lab_6\main.cpp:13:7: note: provided for 'template class Abstract'
class Abstract
^
Сам код упростил, оставив только самое важное:
#include <iostream>
#include <string>
#include <algorithm>
#include <array>
#include <ctime>
using namespace std;
const int n=3;
template <typename T>
class Abstract
{
array< array<T,n>, n> massiv;
public:
Abstract()
{
srand(time(0));
for(unsigned int i=0; i < massiv.size(); i++)
for(unsigned int j=0; j < massiv[i].size(); j++)
massiv[i][j] = rand() % 100 - 50;
}
void operator () (array<T,n>& obj, int index)
{
//.........
}
void show()
{
//.........
}
array< array<T,n>, n>& getArr()
{
return massiv;
}
};
int main ()
{
Abstract<int> arr;
arr.show();
int j=0;
for ( auto it = arr.getArr().begin(); it != arr.getArr().end(); j++, ++it)
{
for_each( (*it).begin(), (*it).end(), Abstract<int,n> (j) );
}
arr.show();
return 0;
}