Здравствуйте, chipmunk, Вы писали:
C>....
C>C>class A {
C>public:
C> void doSomething();
C>private:
C> class AImpl;
C> AImpl* m_impl;
C>};
C>class AImpl {
C>public:
C> void doSomething();
C> void doSomethingOnlyFromLib(); // этот метод используется только внутри библиотеки, наружу выставлять его нет смысла
C>};
C>
C>или все-таки хреновый дизайн раз такого хочется ?
да почему же... самое простое, что может прийти в голову ввести метод getImpl в класс A:
class A
{
public:
void doSomething();
class AImpl;
// пометить, что for internal use only, и использовать все равно не получится
AImpl * getImpl()
{ return m_impl; }
private:
...
};
небольшой trade-off, но это ничего.