私はかなりc/C++に新しいです。私は遺伝的アルゴリズム(MS Visual Studio 2013を使用)のプログラムを構築しようとしています。私はあなたにこのプログラムの詳細を惜しみませんが、私は 'パラメータを参照渡し'に問題があります。 関数内の別の関数を参照してパラメータを渡すことはできますか?以下に、私のコードの簡単な例を見つけることができます。関数の別の関数への参照によってパラメータを渡す
struct solution{
int list1[100];
int list2[100];
int list3[100];
int list4[100];
};
void function1(solution& foo)
{
// Algorithm that fills list2
function2(foo); // Fills in list3
function3(foo); // Fills in list4
}
void function2(solution& foo)
{
// algorithm to fill in list3
}
void function3(solution& foo)
{
// algorithm to fill in list4
}
void localSearch(solution& foo)
{
for(int i = 0; i < 10; i++)
{
// Change a random value in list1 of foo
// Rerun function1 and see if it is a better solution
function1(foo);
}
}
int main()
{
solution bar;
// Fill list1 of bar randomly by other function
function1(bar);
// Output finished solution
return 0;
}
私はこれを行うにしようとすると、私はエラーのすべての種類を取得...それに続いて、私の解決策の構造体が壊れおよびリスト1の最初の位置がランダムに戻っ0 への変更私はにいくつかのことを試してみましたこれを緩和しますが、何も動作していないようです。私がfunction1の値を使って解決策を渡しただけでは、プログラムが実行されているように見えますが、この大きな構造体をコピーする必要があるため、処理が遅くなります。
は、だから私の質問は以下のとおりです。
1)それははfunction1に、別の関数に参照によって渡されたパラメータに()参照渡しすることは可能ですか?
2)もっと良い解決策はありますか?
問題を解決するにはどうすればいいですか?特別な構文は必要ありません。 –
'function2'と' function3'を前方宣言する必要があると思います。なぜなら、それらをdelcaringせずに 'function1'で使用しているからです。あるいは、両方を 'function1'の上に移動することもできます。 – PcAF
**あなたの投稿を**エラーメッセージのサンプルで編集してください(最初の10ページを見てみましょう)。 –