我有一个包含static unsigned int
的方法,因此它可以返回连续的目录名称。像这样的东西:
string MyClass::createDirectory() const
{
static unsigned int i = 0;
stringstream ss;
string directory;
do
{
++i;
ss.str("");
ss << "/" << setfill('0') << setw(6) << i;
directory = m_rootDirectory + ss.str();
} while(!m_filesystem->createDirectory((directory)));
return directory;
}
我知道这是一个非常幼稚的解决方案,但现在已经足够好了。
但是我在编写单元测试时遇到了问题——静态变量在测试用例之间递增。
有没有办法重置这样的变量?还是将静态方法变量更改为非静态类成员是我唯一的选择?
我正在使用 Google 测试框架。
最佳答案
您无法在其声明的函数范围之外重置静态局部变量。
我会尝试在没有静态本地的情况下实现您的 MyClass::createDirectory
函数,即使它需要重新定义函数的签名甚至整个类的接口(interface)。
关于c++ - 谷歌测试和静态局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31649951/