![]() |
1
1
我认为仅仅使用包装器不容易做到这一点,因为您必须拦截IO调用,因此包装类会将代码放在错误的层。本质上,您希望替换对象下面的IO代码,但您正试图从顶层执行此操作。如果您将代码看作洋葱,那么您正试图修改外层皮肤,以影响两层或三层的内容;这表明设计可能需要重新考虑。 如果您试图以这种方式包装/修改的类确实允许您传入流(或您使用的任何IO机制),那么将该类替换为缓存类将是正确的做法;从本质上讲,这也是您试图用包装器实现的目标。 |
![]() |
2
1
它看起来像一个简单的任务,假设“NumberCruncher”有一个已知的接口,比如int操作符(int)。 请注意,您需要使其更加复杂,以支持其他接口。为此,我添加了另一个模板参数,适配器。适配器应将某些接口转换为已知接口。下面是一个简单而愚蠢的静态方法实现,这是实现它的一种方法。再看看函子是什么。
|
![]() |
3
1
我想我找到了你想要的答案,或者,至少,我几乎找到了。它使用了您建议的发送样式,但我认为它符合您提出的前两个标准,并且或多或少符合第三个标准。
基本思想是使用模板创建一个模板类,其参数是要包装的对象的类
因为这个包装类所做的也被称为
memoization
,我选择调用模板
下面是一个简单的测试,显示了它的用途:
Called three(1) 3 Called three(2) 3 3 3 Called square(2.3) 5.29 5.29
|
![]() |
5
0
我还没有弄清楚处理对象方法的理由,但我认为我已经找到了一个很好的解决常规函数的方法
其用途如下:
有没有关于如何使其适用于对象的提示? |
![]() |
TCD · 标准库非类型模板类是否显式实例化? 2 年前 |
![]() |
sovesti · 参数较少的模板函数中的演绎 2 年前 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 2 年前 |
![]() |
Seymore Glass · 模板不工作的默认参数 2 年前 |
![]() |
Alexander Daum · 模板参数中对模板类型的引用 6 年前 |
![]() |
ledonter · 为什么注入的类名有时不被视为类模板中的模板名? 6 年前 |