#include <iostream>#include <string>#include <tr1/functional>struct A { A(const std::string& n) : name_(n) {} voID printit(const std::string& s) { std::cout << name_ << " says " << s << std::endl; }private: const std::string name_;};int main(){ A a("Joe"); std::tr1::function<voID(const std::string&)> f = std::tr1::bind(&A::printit,&a,_1); a("Hi");}
并得到这些错误:
prog.cpp: In function ‘int main()’:
prog.cpp:18: error: ‘_1’ was not declared in this scope
prog.cpp:19: error: no match for call to ‘(A)(const char [3])’
prog.cpp:18: warning: unused variable ‘f’
我不能为我的生活找出第18行的错误.
解决方法 两个错误:> _1在命名空间std :: tr1 :: placeholders中定义.你需要使用namespace std :: tr1 :: placeholders;在main()中,或使用std :: tr1 :: placeholders :: _ 1.
>第19行应为f(“Hi”),而不是(“Hi”).
#include <iostream>#include <string>#include <tr1/functional>struct A { A(const std::string& n) : name_(n) {} voID printit(const std::string& s) { std::cout << name_ << " says " << s << std::endl; }private: const std::string name_;};int main(){ using namespace std::tr1::placeholders; // <------- A a("Joe"); std::tr1::function<voID(const std::string&)> f = std::tr1::bind(&A::printit,_1); f("Hi"); // <---------}总结
以上是内存溢出为你收集整理的c – tr1 :: function和tr1 :: bind全部内容,希望文章能够帮你解决c – tr1 :: function和tr1 :: bind所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)