Lau*_*ent 3 c++ pointers reference
隐藏使用引用的setter的指针成员是一件好事吗?
class Foo
{
Bar* m_ptr;
public :
void setBar(Bar& bar){m_ptr = &bar;}
};
Run Code Online (Sandbox Code Playgroud)
或者最好在setter中公开引用对象的真实类型(以及为什么)?
void setBar(Bar* bar){m_ptr = bar;}
Run Code Online (Sandbox Code Playgroud)
事实上,我正在使用不是"引用友好"的stl竞争者,因此我将指针的向量作为类成员但我更喜欢处理引用的方法.这样做是件坏事吗?
编辑:
存储的成员是指针,这个例子更适合我的问题:
class Foo
{
std::vector<FooObserver *> m_observers;
public :
Run Code Online (Sandbox Code Playgroud)
你更喜欢这个:
void addObserver(FooObserver* obs);
Run Code Online (Sandbox Code Playgroud)
或这个 :
void addObserver(FooObserver& obs);
Run Code Online (Sandbox Code Playgroud)
?
在这两种情况下,指针永远不应该为NULL,我认为这是调用者对象的责任.