我已經試過:獲取數組的長度。編譯器錯誤。
template <typename T,unsigned S>
unsigned getArraySize(const T (&v)[S]) { return S; }
Motti的回答https://stackoverflow.com/a/18078435/512225
後,但我得到這個消息:
錯誤C2265: '':參考一零大小的數組是非法的
我的編譯器出了什麼問題?
我給看看這個頁面: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/4b78bcef-4c33-42f1-a4c5-fb6f702ced0b/vs6-c-compile-error-using-getaddrinfo 所以我嘗試這個解決方案:
template <typename T,unsigned S>
unsigned getArraySize(const T v[S]) { return S; }
這個編譯,但是當我嘗試使用它:
double myX[2] = {7,3};
std::cout << getArraySize(myX) << std::endl;
我得到一個編譯錯誤:
錯誤C2783:'unsigned int __cdecl getArraySize(const T [])':無法推斷'S'的模板參數
除了更改編譯器之外,有沒有可用於獲取數組大小的解決方法?
使用'std :: array'。當第一次定義'getArraySize(myX)'時,錯誤是什麼?該錯誤意味着一個零長度的數組,但是你的數組myX顯然具有多於零的元素。 – Rapptz
您可以發佈爲您提供C2265第一個解決方案的代碼嗎? – Angew
第一個例子應該工作......我從字面上複製/粘貼它並運行它,然後它返回2.你有什麼編譯器? –