Нет, это невозможно динамически.
Если A наследуется от B, это должно быть какое-то отношение B («is-a»). Эта взаимосвязь означает все объекты класса A, независимо от контекста.
Тот факт, что вы хотите наследовать иногда от B, иногда от C, предполагает, что вы думаете об отношениях «has-a». Это будет осуществляться по составу:
class B;
class C;
class A {
B *hasB; // of course in real lif you'd use unique_ptr or shared_ptr...
C *hasC;
public:
A(B *b); // would set hasB but set hasC to nullptr.
A(C *c); // would set hasC but set hasB to nullptr.
...
};
Если ваша проблема не будет обрабатываться динамически, но только во время компиляции, вы можете думать о шаблонах:
template <class T>
class A : public T {
...
};
A<B> ab; // A<B> inherits from B
A<C> ac; // A<C> inherits from C
// but attention: both class are two different classes.