![]() |
1
3
此外,在一个类中加载如此多的任务可能没有那么好。例如,Boost
|
![]() |
2
7
不幸的是,没有。两者都返回相同的类型,
现在可以按如下方式实例化对象:
|
![]() |
3
2
另一方面,您可以使用特定的
当然,这意味着您有适当的逻辑,但它是封装的。您还可以添加过载
最后,还可以通过构造函数的重载来完成。关键是不要说
|
![]() |
4
2
我认为真正的解决方案是去掉你自己的autopointer类,并去掉使用C样式数组。我知道这已经说过很多次了,但是使用C样式的数组已经没有什么意义了。几乎所有你能用它们做的事情都可以用
|
![]() |
5
2
这是不可能的,因为
常见的解决方案之一是 删除程序 . 向类中再添加一个模板参数,以便为指针传递自定义的删除器。这会使你的班更普及。您可以创建如下的默认删除程序:
对于数组,可以传递自定义删除器:
最简单的实现是:
然后您可以使用它,如下所示:
您可以使类更复杂,这样它就可以为deleter推断类型。 |
![]() |
6
1
但我不认为你走运。毕竟,您的示例没有管理指向
红鼻子独角兽提到,
不幸的是,
所以,你需要两个析构函数,一个来调用
因为某种原因,我只是屈服于;v) 不幸的是,这不适用于动态大小的数组,所以我将写下另一个答案。 |
![]() |
7
1
第二次尝试
让一个智能指针类智能化数组是很容易的。正如您所怀疑的,如果您知道构造函数是一个数组,那么就不需要向它提供运行时标志或参数。唯一的问题是
替代
|
![]() |
dyomas · 模板专门化歧义:可以链接专门化方法或原始方法 8 年前 |
|
Tony · 未定义对模板专用化中基类成员的引用 9 年前 |
![]() |
Matt Welke · C++-未调用函数模板专用化 9 年前 |
![]() |
Jonathan Mee · 按返回类型重载模板 10 年前 |
|
user4037635 · 显式函数专用化的默认模板参数 10 年前 |