Вы объявляете свои массивы, как если бы это был C #. Должно быть
int profit[]
Или
int *profit
Вы попадете в этот следующий. Вы должны завершить свой класс точкой с запятой.
class Foo {
}; <----
Проблема next у вас логическая, а не синтаксическая. Это не делает то, что вы думаете:
int N = sizeof(profit)/sizeof(decay);
Вы берете sizeof
два указателя, а не размер массивов. На самом деле у вас есть:
int N = 4/4 /* assumes sizeof int == 4 */
Вам также необходимо передать размер вашей функции (или, что еще лучше, прекратить использование массивов и использовать vector<T>
.)
Когда вы берете «массив» в качестве аргумента для вашей функции, он фактически превращается в указатель на тип массива (сам массив не может быть передан в функцию). Отсюда следует, что:
void Foo( int array[] ) {
size_t arrSize = sizeof(array);
// arrSize == 4 for a 32-bit system, i.e., sizeof(int*)
int a[100];
size_t actualSizeInBytes = sizeof(a);
// actualSizeInBytes == 400, i.e., 4 * 100 as an int occupies 4 bytes
}
Далее, эта строка приводит к тому, что ваша первая итерация всегда пропускается. Не уверен, что это преднамеренно:
if (i == j) continue;