C++ google测试中的共享全局对象
我想创建一个对象,在多个类中的多个测试之间共享(创建这个对象需要很长时间) 以下是我提出的指南和问题:C++ google测试中的共享全局对象,c++,googletest,C++,Googletest,我想创建一个对象,在多个类中的多个测试之间共享(创建这个对象需要很长时间) 以下是我提出的指南和问题: static Object * model; class MyEnvironment : public testing::Environment { public: MyEnvironment(){ model = new Object("arguments"); } }; 我主要调用::testing::Environment*const env=::te
static Object * model;
class MyEnvironment : public testing::Environment {
public:
MyEnvironment(){
model = new Object("arguments");
}
};
我主要调用::testing::Environment*const env=::testing::AddGlobalTestEnvironment(newmyenvironment)
。我验证了对象是否已创建。
在另一个文件中,我尝试使用以下代码访问创建的对象:
#include "Environment1.h"
TEST(ModelTest, ReadParameter)
{
Object *m = model ;
}
然而,m是空的。在任何地方都没有解释如何实现共享对象,在尝试了几个小时后,我已经没有选择了
提前感谢。不要将静态变量与全局变量一起使用-这意味着每个模块都有自己的副本-因此带有
TEST(ModelTest,ReadParameter)
的文件除了带有main()的文件之外,还有其他model
。。但若我不使用static,我会从链接器中得到一个重复的模型符号错误。您可以将其添加到标题中的全局变量中,但您还必须在一个cpp文件中定义它。非常感谢!!!extern方法解决了重复符号问题。的可能重复不使用全局变量的静态-这意味着每个模块都有自己的副本-因此带有TEST(ModelTest,ReadParameter)
的文件除了带有main()的文件之外,还有其他model
,我试过了。。但若我不使用static,我会从链接器中得到一个重复的模型符号错误。您可以将其添加到标题中的全局变量中,但您还必须在一个cpp文件中定义它。非常感谢!!!外部方法解决了重复符号问题。可能重复