我知道std::unique_ptr
是现在这个样子的,也不会因为向后兼容性而改变,但我想知道规范的编写者为什么没有重载get
方法,使其具有类似以下的const变体:
const T* get() const;
为了遵循unique_ptr
的const
意图,最好的猜测是它试图模仿指针并像T* const
一样运作,而不是像一个典型的类。作为后续问题,如果我想以类似于常量的方式在我的类的常量实例中持有指针,我应该使用除std::unique_ptr
之外的其他东西来持有数据吗?
更新
在我的情况下,我希望保护自己免受在类本身中误用指针的影响。我正在编写一个常量移动构造函数MyClass(const MyClass&& other)
,并通过std::copy
将新实例中的数据复制到其他实例中。由于我假定复制一定是正确的,因为有了常量保护,所以追踪错误花费了很长时间。我正在努力找出除了提供一个常量getter并在进行复制时在类内部使用它之外,我还能做什么来保护自己。
std::unique_ptr<YourClass const>
不是你所寻求的吗?还是我误解了问题的那一部分。 - WhozCraigchar[]
和一个int
来表示长度。我想传递它并让消费者操作字节,除非他们有一个 const 实例。即使我为数据提供了 const 和 non-const 的 getter,我也希望确保我的内部方法不会干扰传递给我的类方法的 const 实例上的数据。 - quittle