非常に奇妙な問題で立ち往生しているため、この質問を投稿しました。いくつかの .cpp ファイルといくつかのヘッダーのプロジェクトがあります。特に、このコードは 3 つの異なる .cpp ファイルに含まれています。
void printGraph2d(std::vector < std::vector <plotData> > data, double dy, double dt, const unsigned int M, unsigned int intervalliTemporali);
void printGraph3d(std::vector < std::vector <plotData> > data, double dy, double dt, const unsigned int M, unsigned int intervalliTemporali);
double alpha = 0.000217f;
double hBarra = 0.04f;
double uWall = 100;
double dt = 0.0001f;
const unsigned int Y = 41;
const unsigned int M = 15000;
double dy = hBarra/(Y - 1);
double grid [M][Y];
std::vector <std::array <double, 4> > tridiagonal;
unsigned int intervalliTemporali;
各ファイルで異なる役割を果たします。コンパイラが「複数定義エラー」を取得するのはなぜだろうか。2 つの関数プロトタイプと変数は、(ヘッダーではなく) .cpp ファイルでのみ定義され、宣言されているファイルでのみ使用されます。
宣言の前に「静的」という単語を入れてこのエラーを解決しましたが、問題なく動作しましたが、デバッガーに問題がありました (変数の値が表示されません)。上記の変数と関数の名前を変更すると、デバッガーでのトラブルがなくなることがわかりました。変数の名前を変更する代わりに、グローバルではなく関数内で変数を宣言することにしました。関数の名前は変更していません。このようにすると、関数「cranknicolson1()」を呼び出すたびに、何かを実行する前に突然プログラムがクラッシュします。この非常に奇妙な動作は、関数プロトタイプの前の「静的」という言葉によって引き起こされていると思います。説明できないからです!!! これが私のコードです。http://qpwoei.altervista.org/Code.zip 何かを実行する前に、cranknicolson1() でコードがクラッシュするという事実を強調します。したがって、クランクニコルソン アルゴリズムには問題はありませんが、別の問題があります。誰かが私を助けてくれることを願っています、よろしくお願いします!!