On Mon, Sep 04, 2023 at 11:58:23AM +0200, Lionel Élie Mamane wrote: > Reading up on ImplInheritanceHelper, I think you meant (or my question > was unclear, but the answer to the question I had meant to ask is) > typedef cppu::ImplInheritanceHelper <grault, css::corge > bar_BASE; > class bar: public bar_BASE > { > .... > } Now we hit the problem that css::corge is an extension of an interface already implemented by grault (let's call it css::qux), so css:qux becomes an ambiguous base of class bar, as it is derived from twice :-| How do we solve that? So to recap (and rename corge to qux2 for better clarity) we have: /* qux2.idl contains: * * interface qux2 : qux * { * ... stuff ... * ) */ #include <grault.hxx> /* grault.hxx contains: * * typedef ::cppu::WeakComponentImplHelper2 < * css::baz, * css::qux > grault_BASE; * * class grault : public grault_BASE { ... } */ typedef grault bar_BASE; class bar : public bar_BASE { ... } and what we want to achieve is to implement interface css::qux2 in class bar. Surely there must be a recipe for that. (For Stephan: css::qux above is css::sdbc::XConnection in the patch, and qux2 is the newly introduced css::sdbc::XConnection2)