以下代码对我来说很好:
#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;
}
但是当我用 VC9 编译时出现以下错误
error C2070: 'float []': illegal sizeof operand
我希望这段代码能够编译。我错过了什么吗?有谁知道解决这种奇怪行为的方法(请注意,没有模板的完全相同的东西编译得很好并输出 3)。
请注意,删除模板不是一个选项,我制作了这个示例来重现我在代码中遇到的问题,我需要包含数组的类型作为模板。
谢谢