Hello everyone,


Suppose in Pimpl Idiom, we put private members into Pimpl class (implementation class).

(http://www.gotw.ca/gotw/024.htm)

My questions are, if we changed the Pimpl class and do not change visible parts of the whole component (class). There are two parties, component and client. Inside the component, there are two parts, Pimpl part and visible (to client) part.

1. For the component, I think it needs re-compile, since private members of Pimpl part changed are referred by visible parts (public members refer to private members);

2. I am not sure whether for the whole component, it needs to relink? I think it depends on whether other compile unit of the component invokes functions from the Pimpl part of component? Is it correct?

3. I am not sure whether for the client, it needs re-link? If we provide the whole component as a static lib, client needs to re-link, right? And if we provide the whole component as a DLL, and client implicit links with it with import library, does the client needs relink again?


thanks in advance,
George