Tôi có mã này ở đây.Vòng lặp dựa trên dải và chức năng nội tuyến
#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;
}
Hàm bigArry() trả về giá trị cao nhất trong một mảng gồm 5 phần tử.
Vấn đề là khi tôi sử dụng vòng lặp dựa trên phạm vi, nó cung cấp cho tôi các lỗi được đề cập trong mã. Nhưng khi tôi sử dụng bình thường, mọi thứ trở lại bình thường. Ý tôi là, cú pháp đối với tôi có vẻ ổn, tôi không thể thấy được vấn đề. Tôi đang sử dụng Visual Studio 2010.
Điều khác tôi muốn hỏi là về các hàm nội tuyến. Hiện tại tôi đang đọc C++ Primer Plus phiên bản thứ 6. Khi nào tôi biết khi nào một hàm quá lớn để được gạch chân? Có tiêu chuẩn về cách viết mã ngắn không? Hoặc, chúng ta có sử dụng các hàm nội tuyến khi chúng ta "nghĩ" được không?
Cảm ơn bạn, RobertEagle
Không phải lỗi trình biên dịch thứ 2 của bạn có '[T = int]', thay vì 'float'? – yzt
Cách sử dụng 'vector'? –
Immueggpain
Nổi đến từ mảng cũ mà tôi đã khai báo. –