私はある種のニューラルネットワークライブラリを構築しています。前にライブラリを作ったことがないので、スタイルに関するいくつかの質問があります。私のプロジェクトで
は、たとえば次のクラスのためにあります。関数を名前空間に限定する
NeuralNetwork, Layer, Util
すべての名前空間1に。今、Layer
とUtil
は、NeuralNetwork
で呼び出されるため、いくつかのパブリック関数を持つ必要があります。しかし、NeuralNetwork
が「世界の残りの部分」のためにアクセス可能でなければならない唯一のクラスです(そして、btw。単一のLayer
オブジェクトを作成するのは意味がありません)。
私はその名前空間内の他のクラスでこれらの関数を使用することができるいくつかの方法がありますか?それとももっと洗練されたアプローチがありますか?私はクラスを拡張し、私的な関数だけを作ることを考えましたが、それは意味をなさないでしょうし、メインクラスが他のクラスから派生するのではなくむしろそれらを使用するので、コードを醜いものにするでしょう。
生産品質ライブラリが何をするかを知る最も良い方法は、それらを調べることです。 – StoryTeller
私はあなたが取り組むべき問題さえも話していますか?それとも、あなたはそれで暮らしていて、誰もそれで奇妙なことをすることを考えないことを願っています。 – po0l
@ po0l: 'Util.h'で' Util'を定義し、 'NeuralNetwork.h'ではなく' NeuralNetwork.cpp'で 'Util.h'だけを使うと、' Util.h'を配布する必要はありません'あなたのユーザーに。そして、あなたがソース全体を提供しても、 'include /'にパブリックヘッダを入れ、 'src /'に内部ヘッダを実装するのは珍しいことではありません。 – MSalters