最近C++を覚え始めたのですが、オブジェクト指向の考え方について質問があります。

class foo{
...
};
class bar{
foo f;
...
};

このような場合、barのfooに対する依存性が強いと考えられますが、OOP的には望ましくないのでしょうか?
特にfooがbarでしか用いられないような場合、fooをbarのインナークラスとして定義するべきなのでしょうか?
もしくは、この設計は全くもって適当でない、と判断すべきなのでしょうか。