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文件中定义它。非常感谢!!!外部方法解决了重复符号问题。可能重复