Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 直接从bind1st和bind2nd调用返回函子_C++_Functor_Bind2nd - Fatal编程技术网

C++ 直接从bind1st和bind2nd调用返回函子

C++ 直接从bind1st和bind2nd调用返回函子,c++,functor,bind2nd,C++,Functor,Bind2nd,bind1st和bind2nd的返回值来自一元函数。通过调用它们,我认为它们提供了一个接受一个参数的函数对象。但这可能是错误的 这是我的密码 template<typename _T> class fun: public std::unary_function<_T, _T> { public: _T operator()(_T arg1, _T arg2) const {return arg1 + arg2;} }; int main() { bind

bind1st和bind2nd的返回值来自一元函数。通过调用它们,我认为它们提供了一个接受一个参数的函数对象。但这可能是错误的

这是我的密码

template<typename _T>
class fun: public std::unary_function<_T, _T>
{
public:
    _T operator()(_T arg1, _T arg2) const {return arg1 + arg2;}
};

int main() {
    bind2nd(fun<int>(),10)(10); //My intention is to directly call the results of bind2nd
}
模板
类乐趣:公共标准::一元函数
{
公众:
_T运算符()(_targ1,_targ2)常量{返回arg1+arg2;}
};
int main(){
bind2nd(fun(),10)(10);//我的意图是直接调用bind2nd的结果
}

出现了很多构建错误。为什么这是错误的?

我认为一元函数对一个参数进行操作,而二元函数对两个参数进行操作。 比如说

  T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数

更改模板(并考虑不使用引导下标):

模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};

所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用
std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。

我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。 比如说

  T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数

更改模板(并考虑不使用引导下标):

模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};

所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用
std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。

我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。 比如说

  T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数

更改模板(并考虑不使用引导下标):

模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};

所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用
std::bind2nd(func(),10)
将获得一元函数。这不会改变bind2nd调用的输入类型。

我相信一元函数对一个参数进行操作,而二元函数对两个参数进行操作。 比如说

  T operator()(T arg1, T arg2) const {return arg1 + arg2;}
是一个二进制函数

更改模板(并考虑不使用引导下标):

模板
类乐趣:公共std::二进制函数
//^^^^^---嗯,它需要两个参数
{
公众:
T运算符()(T arg1,T arg2)常量{返回arg1+arg2;}
};

所以,
fun
是一个二进制函子。绑定它的一个参数后,例如,通过调用
std::bind2nd(func(),10)
将获得一元函数。这不会改变
bind2nd
调用的输入类型。

注意
\u T
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗
bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用
bind
而不是
bind1st
bind2nd
,并且不要麻烦从
一元函数
二元函数
派生。请注意
\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗
bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用
bind
而不是
bind1st
bind2nd
,并且不要麻烦从
一元函数
二元函数
派生。请注意
\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗
bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用
bind
而不是
bind1st
bind2nd
,并且不要麻烦从
一元函数
二元函数
派生。请注意
\t
是一个保留标识符!“发生了很多构建错误。”一般来说,第一个错误行非常有用。你应该把它们包括在你的问题中。或者至少描述一下错误信息中写的内容……你感觉到一元函数和二元函数的区别了吗
bind2nd
需要最后一个。请注意,这在C++11中都是不推荐的。使用
bind
而不是
bind1st
bind2nd
,并且不必费心从
一元函数
二元函数
派生。