У меня есть этот код.Круглые петли и встроенные функции
#include <iostream>
using namespace std;
template <typename T> inline T bigArry(const T data[5])
{
T level = data[0];
for(T item : data) // error C2143: syntax error : missing ',' before ':' (1st)
{ //error C2143: syntax error : missing ';' before '{' (3rd)
if(level<item){ level=item; }
}
return level;
}
int main()
{
int data[5]={//five variables}
cout << bigArry(data);//see reference to function template instantiation 'T bigArry<int>(const T [])' being compiled with [ T=int] (2nd)
return 0;
}
Функция bigArry() возвращает наибольшее значение из массива из 5 элементов.
Проблема в том, что когда я использую цикл на основе диапазона, он дает мне ошибки, упомянутые в коде. Но когда я использую обычное, все возвращается к норме. Я имею в виду, синтаксис для меня выглядит отлично, я не вижу проблемы. Я использую Visual Studio 2010.
Другая вещь, о которой я хочу спросить, это о встроенных функциях. В настоящее время я читаю C++ Primer Plus 6-е издание. Когда я знаю, когда функция слишком велика, чтобы быть встроенной? Существует ли стандарт того, насколько короче код? Или мы используем встроенные функции, когда мы «думаем», что все в порядке?
Спасибо, RobertEagle
Не должна ли ваша вторая ошибка компилятора '[T = int]' вместо 'float'? – yzt
Как насчет использования 'vector'? –
Immueggpain
Поплавок происходит из старого массива, который я объявил. –