以下代码对我来说很好看:
#include <stdio.h>
template <typename T>
struct A
{
static float m_kA[];
};
template <typename T>
float A<T>::m_kA[] = {1.0f, 2.0f, 3.0f};
int main()
{
printf("%d\n",
sizeof(A<unsigned int>::m_kA) /
sizeof(A<unsigned int>::m_kA[0]));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我用VC9编译时,我得到以下错误
error C2070: 'float []': illegal sizeof operand
Run Code Online (Sandbox Code Playgroud)
我希望这段代码能够编译.我错过了什么吗?有没有人知道一种方法来解决这种奇怪的行为(请注意,没有模板的完全相同的事情编译好并输出3).
请注意,删除模板不是一个选项,我做了这个例子来重现我在代码中的问题,我需要包含数组的类型作为模板.
谢谢