- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚发现自己创建了一个类
template <typename T> struct invoker {
void operator()(T& it) const {it();}
};
所以我可以通过 invoker<foo>
到想要调用 invoker<foo>::operator()(foo&)
的东西(不在我的控制之下)反复使用不同的 foo
实例,让它将这些调用转发给 foo
的 foo::operator()()
方法。
我知道它只有几行,但这似乎是 STL 的函数式或 boost::bind
可能已经提供的那种东西不知何故。除了我看不到诀窍,如果有的话。 (我确定我不是第一个使用非常类似的东西的人;它有名字吗?)
最佳答案
好吧,您可以使用 std::bind
,可能还可以使用 boost::bind
来实现相同的行为:
#include <string>
#include <iostream>
#include <functional>
struct foo {
void operator()() {
std::cout << "Hallo, im at addr: " << std::hex << this << std::endl;
}
};
int main() {
std::function<void(foo*)> fun = std::bind(&foo::operator(), std::placeholders::_1);
foo f1, f2;
fun(&f1);
fun(&f2);
}
输出:
Hallo, im at addr: 0xbffc396a
Hallo, im at addr: 0xbffc3969
如果您对参数类型使用模板类,则无需重新发明轮子即可获得相同的行为。
编辑:正如 Crazy Eddie 指出的那样,您可以只使用 boost::mem_fn
或 std::mem_fn
:
std::function<void(foo*)> fun = std::mem_fn(&foo::operator());
代替 bind
。
关于c++ - 我是在用这个微不足道的方法调用转发类重新发明轮子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610307/
从下面的 setup.py 文件中,我试图从一个应该只包含 python 2.7 代码的项目中创建一个纯 python wheel。 from setuptools import setup setu
我正在尝试在 Linux 上安装 pytorch ( http://pytorch.org/ ),根据我的机器配置,我应该运行的命令是: pip 安装 https://s3.amazonaws.com
也许是一个广泛的问题,但我认为这与任何使用 github 并可以显着减少他们的工作量的 python 包维护者相关,所以希望这些权力能够让它站住脚。 基本上,在我看来: 为 python 构建和发布轮
我有一个包含 C 扩展的包,我想上传到 pypi:https://github.com/Erotemic/netharn 我使用命令 python setup.py bdist_wheel --py-
TLDR :裤子获取 OS X 特定的轮子,因为我正在 Mac 上开发。我怎样才能避免这种情况,或者指定我将部署到 Ubuntu? 全文 : 尝试使用 Pants 打包 Python 应用程序。到目前
我正在 Azure Pipelines 上运行测试(但同样的情况也适用于 Travis 和 Appveyor)。我有一个 Python 包,我们将其称为“计算器”,其中包含 cython 扩展。当我推
是否有(事实上的)标准 MIME 类型可用于 Python 轮包?我在 PEP 427 中看不到任何内容。 我认为 application/zip 可能是一个选项,但这似乎误导了我。 最佳答案 没有。
我一整天都在为 --find-links 苦苦挣扎,如果有人能在这里帮助我,我将非常感激。 我一直在使用python3.4进行开发,我添加的新功能之一使用Azure存储(最新版本),它需要加密,这需要
之前,我们仅将内部 pip 存储库用于源代码分发。展望 future ,我们还希望托管轮子来完成两件事: 为(本地)开发人员机器和 Alpine Docker 环境提供我们自己的代码 为没有 Alpi
我是一名优秀的程序员,十分优秀!