例如
struct A
{
void foo() {};
};
struct B
{
B() {}
void setA(A* a) { mA = a; }
foo() { mA->foo(); }
A *mA;
};
Run Code Online (Sandbox Code Playgroud)
内部有一个A关联的(只是一个地址)B.而且B::mA一定不能null.我经常忘记setA并且引入了错误.有什么好的做法可以避免它?setA以下怎么样?
void B::setA(A& a) { mA = &a; }
Run Code Online (Sandbox Code Playgroud)
最好的方法是首先避免使用指针.如果必须使用指针,请考虑使用智能指针,如std::unique_ptr或std::shared_ptr.始终,始终初始化指针,要么为null(除非你使用智能指针)或你已经分配的东西.而一向总是 一直在使用前检查空.