如果我将DYNAMICTOP_PTR
放在TEST中,一切正常,但是,如果我把它放在外面,它会抱怨错误。怎么了?根本原因?
DefaultValue<int>::Set(10)
答案 0 :(得分:1)
DefaultValue<int>::Set(10)
是函数调用。它是一个声明,一般而言语句在命名空间范围内不能单独出现。
将它放在功能的范围内是可以的,这就是它起作用的原因。虽然你可能想要重构它,所以它在你测试套件之前只运行一次(毕竟这是一个具有全局默认值的点)。
将它放在任何函数之外时得到的错误只是由于编译器的混淆。由于它看起来就像你试图专门化DefaultValue<int>
的成员函数一样,编译器并不知道你的意图是做一些无法完成的事情。因此,如果您在专业化方面犯了一个诚实的错误,那么诊断的表达方式可以帮助您做正确的事情。