我试过了:
template <typename T,unsigned S>
unsigned getArraySize(const T (&v)[S]) { return S; }
在莫蒂的回答之后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 [])' : could not deduc template argument for 'S'
除了更改编译器之外,是否有一种解决方法可以用来获取数组的大小?