我遇到了几个问题,其中的答案表明使用 T* 从来都不是最好的主意。
虽然我已经大量使用了 RIIC,但在我的代码中有一个特殊点,我使用了 T*。阅读了几个自动指针,我找不到一个我会说我使用它有明显优势的地方。
我的场景:
class MyClass
{
...
// This map is huge and only used by MyClass and
// and several objects that are only used by MyClass as well.
HashMap<string, Id> _hugeIdMap;
...
void doSomething()
{
MyMapper mapper;
// Here is what I pass. The reason I can't pass a const-ref is
// that the mapper may possibly assign new IDs for keys not yet in the map.
mapper.setIdMap(&_hugeIdMap);
mapper.map(...);
}
}
MyMapper
现在有一个HashMap<...>*
成员,根据对无关问题的高度投票回答,这绝不是一个好主意(尽管映射器会在实例之前超出范围MyClass
,因此我不认为这是一个太大的问题。new
映射器中没有,也不需要delete
)。
那么在这个特定用例中最好的选择是什么?