classe de amigo com acesso limitado

Eu quero fazer uma classe Uma classe de amigo da classe B. Eu quero fazer isso, pois estes interagem muito e A precisa mudar internals da classe B (que eu não quero expor usando público). Mas quero ter certeza de que ele tenha acesso a apenas algumas funções selecionadas, não todas as funções.

Exemplo:

class A
{
};

class B
{
private:
 void setState();
void setFlags();
friend class A
};

Eu quero que A possa acessar setState mas não setFlags ... Existe um padrão de design ou uma maneira legal de fazer isso ou me resta dar acesso total ou nenhum acesso neste caso.

obrigado

questionAnswers(3)

yourAnswerToTheQuestion