3

私にはクラスと与えられた非常に複雑なメソッドがあり、そのためにいくつかの補助関数を定義しましたが、他の場所では使用されていません。今、私は私がすべきかどうか疑問に思っています

  • それらを私のクラスに追加します-それはOOPパラダイムに従って行われるべきことのようです
  • クラス定義をその種の半冗長メソッドで埋めるとクラス定義が読みにくくなるため、それらを外部に、つまり個別に、実装ファイルにのみ保持します。

私の質問は、C++スタイルが関係しているときにどうすればよいかということです。C ++はオブジェクト指向言語ではなく、ハイブリッド言語ですが、2番目の解決策はOOPの原則に反していると思います。私が言及する関数は、クラスメソッドとして実装された場合、静的になります。

4

2 に答える 2

8

それらをソースファイル内の名前のない名前空間に配置します。
名前のない名前空間を使用すると、関数を変換ユニット内に表示できますが、変換ユニットの外部には表示できません。あなたの関数はまだ外部リンケージを持っていますが、それらは単に翻訳ユニットの外の誰にも見えません。

于 2013-01-23T15:04:17.930 に答える
3

FWIW、これを追加します。これまでの回答は問題ありませんが、C ++ 11以降、厳密に補助関数の場合、より優れた、煩わしくない解決策があることがわかりました。

それらが提供するメソッド内でラムダとして定義します。

friendこれにより、他のすべての場所でそれらが非表示になり、宣言を使用したり、プライベート静的メンバーにすることなく、適切なアクセス許可が与えられます。

于 2013-01-23T15:20:05.917 に答える