来自gmock的DefaultValue的范围问题

时间:2017-11-12 08:07:39

标签: c++ namespaces googletest gmock

如果我将DYNAMICTOP_PTR放在TEST中,一切正常,但是,如果我把它放在外面,它会抱怨错误。怎么了?根本原因?

DefaultValue<int>::Set(10)

1 个答案:

答案 0 :(得分:1)

DefaultValue<int>::Set(10)是函数调用。它是一个声明,一般而言语句在命名空间范围内不能单独出现。

将它放在功能的范围内是可以的,这就是它起作用的原因。虽然你可能想要重构它,所以它在你测试套件之前只运行一次(毕竟这是一个具有全局默认值的点)。

将它放在任何函数之外时得到的错误只是由于编译器的混淆。由于它看起来就像你试图专门化DefaultValue<int>的成员函数一样,编译器并不知道你的意图是做一些无法完成的事情。因此,如果您在专业化方面犯了一个诚实的错误,那么诊断的表达方式可以帮助您做正确的事情。