IBSS mode does not provide a mechanism for one peer to transfer traffic on behalf of another peer. Thus, all IBSS peers that must communicate with each other must be directly within the radio range. In your description, you have described a classic "hidden knot problem" in which C is visible to B but hidden from A. Thus, C and D are considered "hidden nodes" from the point of view of A. IBSS does not provide no solution to the problem of the hidden node.
On the other hand, AP-based BSSs do not encounter this problem because all devices currently in the BSS are guaranteed to be within range of the AP, and the AP acts as an "intra-BSS relay", relaying the packets between wireless clients of the same network. BSS. In fact, in AP mode, the intra-BSS relay is still active, even if the two clients who speak to each other are within range of each other. There is a newer technology called Tunneled Direct Link Setup (TDLS), which does not seem to be widely deployed, but it provides an access point's customers with a way to make direct connections to each other so 'go faster by avoiding Intra-BSS. Relays and associated overhead.
So, for your illustration to work, you need something more than IBSS. Meshing is a solution, although even before the mesh protocols started to make its way, there was a way to solve this problem. For example, you can make B and C both act as access points, and use a wired Ethernet or WDS landline link between them. The latter assumes that B and C can be configured simultaneously as AP and WDS bridges. The ability to act simultaneously in AP mode and WDS mode is not uncommon, but it is not universal either.
The advantage of Mesh compared to what I just described is that it can handle the topology changes of all moving nodes, while statically configuring B and C to act in it. as access points and statically configure a wired Ethernet or wireless WDS link between them assumes that B and C will not move.