У вас есть много вариантов. Вот 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: Возможно, вам вообще не следует использовать указатель и просто сделать B членом A.
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();
}
};