2

私はもう試した:

template <typename T,unsigned S> 
unsigned getArraySize(const T (&v)[S]) { return S; } 

モッティの答えの後https://stackoverflow.com/a/18078435/512225

しかし、私はこのメッセージを持っています:

エラー C2265: '': サイズがゼロの配列への参照は不正です

コンパイラの何が問題になっていますか?

私はこのページを見まし :私はこの解決策を試しました:

template <typename T,unsigned S> 
unsigned getArraySize(const T v[S]) { return S; } 

これはコンパイルされますが、使用しようとすると:

double myX[2] = {7,3};
std::cout << getArraySize(myX) << std::endl; 

コンパイル エラーが発生します:
error C2783: 'unsigned int __cdecl getArraySize(const T [])' : could not deduce template argument for 'S'

コンパイラを変更する以外に、配列のサイズを取得するために使用できる回避策はありますか?

4

2 に答える 2

2

これは VC6 の制限である可能性があります。他のコンパイラを試しましたか?

于 2013-08-28T11:53:11.607 に答える