-
0 votesanswersviews
尝试使用具有不同方法签名的std :: function来理解多态类
我是相当新的,我试图想出一个例子来帮助我理解多态性,类型擦除和std :: function的使用 . 我试图通过创建这个示例类来理解,它可以接受一个基值,然后是一个std :: function,然后对基值进行许多数学运算之一 . double multiplyValue(double baseVal, double multiplyBy) { return baseVal * mult... -
10 votesanswersviews
函数模板参数推导(类与功能模板)
你能帮我理解为什么参数推导适用于类模板而且不适用于函数模板吗? 如果我理解正确,类模板定义了一个函数,所以当我调用它时,编译器可以进行隐式转换,但是在函数模板的情况下,目前没有函数定义,所以隐式转换没有发生 . 但是我不明白为什么编译器不能创建函数定义然后应用隐式转换? #include <functional> template<typename ...ARGS> cl... -
6 votesanswersviews
C 14:具有通用std :: function作为类成员的通用lambda
考虑这个伪代码段: class SomeClass { public: SomeClass() { if(true) { fooCall = [](auto a){ cout << a.sayHello(); }; } else { fooCa... -
1 votesanswersviews
绑定std :: function错误
尝试使用std :: function和std :: bind绑定方法时遇到问题 . 在我的CommunicationService类中: this->httpServer->BindGET(std::bind(&CommunicationService::ManageGETRequest, this, std::placeholders::_1)); Communicati... -
68 votesanswersviews
C 11 std :: set lambda比较函数
我想创建一个带有自定义比较功能的 std::set . 我可以将它定义为一个带有 operator() 的类,但我想享受定义使用它的lambda的能力,所以我决定在类的构造函数的初始化列表中定义lambda函数,该函数的 std::set 为会员 . 但我可以举个例子: class Foo { private: std::set<int, /*???*/> numbers;... -
3 votesanswersviews
std :: function没有名为'target'的成员
我试图存储唯一函数指针列表 . 纯指针的明显包装似乎是std::function . 事实证明, std::function s cannot be compared . 那么原始指针的简单比较应该有效,对吧?也许,但我收到以下代码的以下错误 . 我的编译器是gcc 4.7.2 . 这是2012年没有实现的吗? std::function<void(bool)> f; voi... -
3 votesanswersviews
std :: function type和template instantiation
我了解lambda,functor和callables,我知道有一个包装类,即 std::function ,允许存储和调用不同类型的callable(只要具有相同的调用签名或函数类型) . 现在,我明白你可以使用函数类型参数来实现函数指针参数,如下所示: void fun(int,int*(int,int&)); 它只不过是一个函数,它接受一个int和一个函数指针到函数如 int *f... -
10 votesanswersviews
使用std :: function和std :: bind来存储回调并处理对象删除 .
我想实现一个管理器,使用C 11将回调存储到多态类的成员函数 . 问题是我不知道如何处理成员所属的对象被删除或应该被删除的情况我希望使界面尽可能简单 . 所以我想到了以下内容:将 std::weak_ptr 存储到该对象以及将 std::function 存储到该成员 . 以下似乎有效: class MyBase { public: MyBase() {} virtual ~MyB... -
3 votesanswersviews
来自派生类的C std :: function绑定
如果我有一个基类MessageWrapper,带有子类SetConfigurationData,为什么绑定子类参数不起作用? 不应该多态地工作吗? Class MessageHandler { public: void RegisterHandler(std::function<void(MessageWrapper &)> callback_) {} ... -
0 votesanswersviews
与std :: function和成员函数指针陷入混乱:( [重复]
这个问题在这里已有答案: How do i write a pointer-to-member-function with std::function? 5个答案 所以,我以为我已经理解了成员函数指针和std :: fuction,但遗憾的是,情况并非如此 . 我有以下代码 - 它是状态机的一些早期部分,但我正在努力 . 让我粘贴代码: #include <iostream> #i... -
4 votesanswersviews
为什么std :: bind无法解析多个参数的函数重载?
请考虑以下示例: #include <iostream> #include <functional> using namespace std; void f(int x,int y) {} // void f(int x) {} // if this line is uncommented, code does not compile. int main() { ... -
37 votesanswersviews
std :: function可以存储指向数据成员的指针吗?
从cppreference,我发现: 类模板std :: function是一个通用的多态函数包装器 . std :: function的实例可以存储,复制和调用任何Callable目标 - 函数,lambda表达式,绑定表达式或其他函数对象,以及指向成员函数和指向数据成员的指针 . 我不明白为什么 std::function 应该能够存储这样的指针,而我之前从未听说过这个功能 .它真的有可... -
0 votesanswersviews
使用派生函数参数绑定
是否可以使用派生参数绑定函数?如果怎么样?我希望能够将函数点存储到各种具有相似签名的函数,即它们使用输入数据的类并返回具有输出值的类 . 但是不同的函数需要并提供不同的参数,因此我尝试注册采用派生消息类的函数 . 以下代码部分有效 . 我可以注册MathService :: blank函数,稍后我可以调用它 . 但是我无法添加MathService :: add . 我得到的错误是: main.... -
2 votesanswersviews
将参数传递给std :: function的函数向量的问题
我正在尝试创建一个std :: function的向量,然后将该向量传递给一个函数 . 我还需要将参数传递给函数对象,所以我使用的是std :: bind . 这是代码: #include <functional> #include <iostream> #include <string> #include <vector> using names... -
2 votesanswersviews
c 11 - 将result_of,decltype,std :: function和variadic模板一起工作
我在使用std :: result_of,decltype和std :: function方面遇到了麻烦 使用可变参数模板 . 我有以下功能 - int foo(int a, int b, int c) { std::cout << a << b << c << std::endl; return 0; } 以下课程 templat...