@yankeenoobs

Как вызвать функциональный объект?

Всем привет.

Пишу лабу на тему функциональные объекты. Не могу вызвать функциональный объект с передачей параметров: контейнер 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;
}
  • Вопрос задан
  • 270 просмотров
Пригласить эксперта
Ответы на вопрос 1
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
main.cpp:73:61: error: wrong number of template arguments (2, should be 1)

В этой фразе что не понятно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы