I'd say this is a new class ID with a constructor ID(A a, B b, C c).
Depending on the real meaning of your objects it may be appropriate to give A the responsibility of creating these if you wish but clearly - as you point out - its should not be done by B or C.
i.e.
class A {
ID newID(B b, C c) {
return new ID(this, b, c);
}
}