私は再帰的な計算を行うことを目的とした関数を持っています。私の関数が再帰的にプログラムされていると、計算に時間がかかりすぎます。したがって、中間結果を配列に格納してメモを実行します。私のプログラムの実行中 名前空間の変数を隠すC++
は、私はので、私は正しい値を持つ配列全体を埋めsetup(double x)
機能を持っているなどのパラメータ
(10,0)
、
(5,5)
、
(2,4)
で関数を呼び出すことができます。私はその後、さらに計算することなく配列値のいずれかにアクセスできます。私は
x
の変更を
setup()
に再度呼び出すまで待つだけです。
私はこれをC++でどのように実装するのかと思います。私は関連するオブジェクトを作成する必要がないので、クラスを使用することは私には意味がありません。私は名前空間で関数をうまく実装しましたが、まだ問題があります。名前のない名前空間を使用しても、私の関数で使用される配列は可視であり、関数の名前空間の外側から変更することができます。名前空間のヘッダファイルをインクルードすると、それはです。
私のコード:
FunctionWrapper.h
namespace FunctionWrapper{
namespace{
double tempArray[10][10];
}
void setup(double x);
void getValues(int n);
}
MAIN.CPPあなたはtempArray
は、他のソースファイルでnameableにしたくない場合は
#include "FunctionWrapper.h"
int main(){
FunctionWrapper::tempArray[0][0] = 5; //Works
}
"名前のない名前空間を使用する場合でも、私の関数で使用される配列は可視であり、関数の名前空間の外側から変更することができます。これは真実ではありません。同じ名前を持つ_different_配列は、プログラムのすべての翻訳単位で表示されますが、関数が使用する配列は、関数を含む翻訳単位でのみ変更可能です。ヘッダーファイルの名前空間は(ほとんど?)決して役に立たない。 –