c++ primer plus第8章,8.8.6,編程練習第六題
template <typename T>
auto maxn(const T arr[])->T
{
int len=sizeof(arr) / sizeof(arr[0]);
T m=arr[0];
for (int i = 1; i < len; i++)
{
if (m<arr[i])
{
m=arr[i];
}
}
return m;
}
template <> char* maxn <char*>(const char* arr[])
{
return arr[0];
}
報錯: 沒有與指定型別匹配的 多載函式 "maxn" 實體
uj5u.com熱心網友回復:
你這個模板寫的不對,你這么些int len 得不到陣列的長度uj5u.com熱心網友回復:
template <typename T>
auto maxn(T & arr)-> decltype(arr[0])
{
int len = sizeof(arr) / sizeof(arr[0]);
decltype(arr[0]) m=arr[0];
for (int i = 1; i < len; i++)
{
if (m<arr[i])
{
m=arr[i];
}
}
return m;
}
報錯沒了,運行時出問題
undefined reference to `decltype ({parm#1}[0]) maxn<int>(int*)'
collect2.exe: error: ld returned 1 exit status
uj5u.com熱心網友回復:
陣列作為引數時,sizeof(arr)會得到一個指標的大小轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/248677.html
標籤:C++ 語言
上一篇:APUE實體圖8-3中的疑問??
