Я довольно новичок в 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;
}
Если я пытаюсь сделать это, я получаю все виды ошибок ... Рядом с этим, моим решением структуры повреждается и первая позиция в list1 случайным образом изменяется обратно на 0. Я попробовал несколько вещей смягчите это, но ничего не работает. Если я просто передаю решение функции1 по значению, программы, похоже, работают, но медленнее, потому что он должен скопировать эту большую структуру.
Так что мои вопросы:
1) Можно ли передать (по ссылке) на параметр, который передается по ссылке на другую функцию, в function1?
2) Что было бы лучшим решением?
Пропустите их, в чем проблема? Специального синтаксиса не требуется. –
Думаю, вам нужно форвардно объявить 'function2' и' function3', потому что вы используете их в 'function1', не разделяя их. Или, альтернативно, вы можете перемещать оба над 'function1'. – PcAF
Пожалуйста, ** отредактируйте свой пост ** с образцом сообщений об ошибках (скажем, первые 10). –