void f( int& i ){ Print( i ); }
voidOnStart()
{
int a, b;
f( a ==5 ); //error: '=' - parameter passed as reference, variable expected
f( b == a ); //error: '=' - parameter passed as reference, variable expected
}
A100: В Вашем примере ошибка обоснована, у меня другой случай
Невнимательно прочитал код, на автомате решил что у вас там условный оператор if, а у вас просто функция под названием f.
Надо передавать в функцию переменную или какое то значение заранее вычисленное, а не выражение.
void f( int& i ){ Print( i ); }
voidOnStart()
{
int a = 5;
int b = a;
f(a); //error: '=' - parameter passed as reference, variable expected
f(b); //error: '=' - parameter passed as reference, variable expected
}
Есть предложения по поводу функции ArrayResize. Нужно добавить возможность задавать параметр reserve_size равным -1, что означало бы использование предыдущего заданного значения. Тогда не придётся хранить или таскать с собой это значение. Достаточно будет вначале отресайзить с нужным резервом, и потом уже не беспокоиться об этом. Иначе постоянные неудобства, когда передаёшь массив в какую-то функцию, которая ресайзит его, но ничего не знает о предустановленном на нём резерве, и в результате сбивает его, что приводит потом к лишним переаллокациям памяти. Ведь я так понимаю, это значение где-то хранится для массива. Или нет?
Ну по идее это означает нулевой резерв. А лишняя память наверно утилизируется. Вообще там много неясностей с этим, мы не можем узнать реальный размер выделенной памяти под массив, чтоб проверить это и оптимизировать работу.
Или вот допустим такой случай. Сначала ArrayResize(arr, 10, 100); Потом ArrayCopy(arr, arr2, 0, 0, 20); Уменьшится ли размер зарезервированной памяти под массив?
Ошибка при компиляции
В Вашем примере ошибка обоснована, у меня другой случай
Невнимательно прочитал код, на автомате решил что у вас там условный оператор if, а у вас просто функция под названием f.
Надо передавать в функцию переменную или какое то значение заранее вычисленное, а не выражение.
Надо передавать в функцию переменную или какое то значение заранее вычисленное, а не выражение.
А в чем разница?
А в чем разница?
В первом случае передается переменная, во втором результат операции. И фиг его знает что там для инта наворочено
На самом деле эта ошибка со ссылкой бесит очень давно и сильно, не должно быть ее вообще.
А в чем разница?
Есть предложения по поводу функции ArrayResize. Нужно добавить возможность задавать параметр reserve_size равным -1, что означало бы использование предыдущего заданного значения. Тогда не придётся хранить или таскать с собой это значение. Достаточно будет вначале отресайзить с нужным резервом, и потом уже не беспокоиться об этом. Иначе постоянные неудобства, когда передаёшь массив в какую-то функцию, которая ресайзит его, но ничего не знает о предустановленном на нём резерве, и в результате сбивает его, что приводит потом к лишним переаллокациям памяти. Ведь я так понимаю, это значение где-то хранится для массива. Или нет?
А разве текущий 0 не так работает?
Ну по идее это означает нулевой резерв. А лишняя память наверно утилизируется. Вообще там много неясностей с этим, мы не можем узнать реальный размер выделенной памяти под массив, чтоб проверить это и оптимизировать работу.