棘手的问题。如果想写一个函数返回一个指针到一些IFoo
对象,是否有可能阻止这个指针的赋值? 我不想让IFoo
成为一个单例,我可以隐藏或删除复制和赋值操作符,但C++实际上是否允许一个模式,我明确地必须调用其他人来获取对象?有没有办法来防止分配指针?
背景的问题是:我正在考虑某种依赖容器,你应该始终问容器得到一些IFoo *
(指针多态性的缘故)的。用户永远不应该能够将其保存到某个局部变量或成员,以避免引用它。 (对于其中容器被指示不再Foo
返回场景,这是从IFoo
但Bar
衍生)
编辑澄清,虽然者R萨胡已经说过,是不可能的。 事实上,马克B的例子是什么,我想阻止一个完美的例证:
IFoo* foo_ptr_I_will_keep_forever = obj->getIFoo();
我不会有接口,但类型的唯一明确的情况下,我可以返回一个参考,这给私人经营=和复制ctor就足够了。
我在处理精确问题时遇到了一些麻烦。你问是否有办法阻止用户说'IFoo * foo_ptr_I_will_keep_forever = obj-> getIFoo();'?一个简短的例子可能会澄清你的问题。 –
指针如何使用? – YSC
您是在谈论一个指向只读对象的指针,并且不允许客户端写入对象? –