我對c/C++相當陌生,我試圖爲遺傳算法構建一個程序(使用MS Visual Studio 2013)。我會告訴你這個程序的細節,但是我確實有'通過引用傳遞參數'的問題。 我可以通過引用另一個函數傳遞一個參數嗎?以下您可以找到我的代碼的一個簡單示例。C++通過參數傳遞函數中的另一個函數參數
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)是否有可能對被引用傳遞給另一個函數傳遞參數(如附圖),在功能1?
2)什麼是更好的解決方案?
只要通過他們,有什麼問題?沒有特殊的語法需要。 –
我認爲你需要提前聲明'function2'和'function3',因爲你在'function1'中使用它們而不刪除它們。或者,您可以將'function1'移到上方。 – PcAF
請**編輯您的帖子**並附上錯誤消息的樣本(比方說前10個)。 –