c++ transform函数 error C2064: 项不会计算为接受 1 个参数的函数


#include<iostream>
using namespace std;
#include<algorithm>
#include<string>
#include<map>
#include<vector>
#include<ctime>
#include<functional>


int op(int v1,int v2)
{
    if (v1>v2)
        return v1;
    else
        return v2;
}

class TransForm
{
public:
    bool operator()(int val,int val2)
    {
        return val>val2;
    }

};

void print1(int val)
{
    cout << val << "   ";
    
}


void test1()
{
    vector<int>v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);
    v.push_back(40);
    vector<int>v2;
    v2.resize(v.size());
    transform(v.begin(), v.end(), v2.begin(),TransForm()); 
    for_each(v2.begin(), v2.end(), print1);
    cout << endl;
    
}

int main()
{
    test1();
    system("pause");
    return 0;
}

这是我的函数,为什么一运行就报error C2064: 项不会计算为接受 1 个参数的函数

transform 的第四个参数是以“输入容器的元素类型或可隐式转换为输入容器的元素类型”为唯一参数并以“输出容器的元素类型或可隐式转换为输出容器的元素类型”为返回值的函数对象,所以 Transform::operator() 应以 int 或可隐式转换为 int 的类型作为参数,并以 int 或可隐式转换为 int 的类型作为返回值,例如:int Transform::operator()(int)