У вас есть много вариантов. Вот 5.
Решение 1: Передайте ссылку B в A вместо указателя.
Хотя возможно иметь ссылку на объект NULL. Это очень сложно сделать, и вам не нужно проверять это.
class A
{
B &b;
public:
A (B& b_) : b(b_)
{
}
int getB()
{
return b.getB();
}
};
Решение 2: Не жертвуйте дизайн отношения ваших классов с этим, но это может быть применимо.
Имейте класс A, полученный из B. Тогда вы можете просто вызвать getB().
Решение 3: Возможно, вы не должны использовать указатель на всех и просто сделать Б а член А.
class A
{
B b;
public:
int getB()
{
return b.getB();
}
};
Решение 4: Утверждай сразу к избежать последующих проверок
class A
{
B *b;
public:
A (B* pb) : b(pb)
{
assert(pb != NULL);
}
int getB()
{
return b->getB();
}
};
Решение 5: Есть по умолчанию B в том, что вы используете
class A
{
B *pb;
B defaultB;
public:
A() : pb(&defaultB)
{
}
void setB(B* pb_)
{
if(pb != NULL)
pb = pb_;
}
int getB()
{
return pb->getB();
}
};
Зачем вам нужно избегать проверок нулевого указателя? –
Да, было бы хорошо знать, чего вы пытаетесь достичь ... оптимизация? Чистый код? – timday
не является нулевой проверкой в неправильном месте? getB() должен возвращать B или ... null (что еще он мог бы вернуть?) –