【发布时间】:2016-03-20 09:49:19
【问题描述】:
我想全局共享一个类的实例,以便我可以从我想要的任何源文件访问该类的成员函数。我对此有点陌生,所以我想知道最好的方法。作为记录,这是我的程序的一部分,它将向日志窗口输出文本,因此输入将来自我程序中的几乎每个类。下面是一些示例代码:
MyClass.h
class MyClass
{
public:
MyClass();
private:
int start, end;
void parse(std::string);
};
MyClass.cpp
#include "myclass.h"
MyClass::MyClass()
{
}
void MyClass::parse(std::string){
// do some stuff here
}
OtherClass1.h
#include "myclass.h"
class OtherClass1
{
public:
OtherClass1();
private:
MyClass someInstance1;
};
OtherClass1.cpp
#include "otherclass1.h"
OtherClass1::OtherClass1()
{
someInstance1.parse("This is a string.")
}
好的,太好了。但现在我希望能够在另一个类中使用相同的someInstance1 实例(即OtherClass2)。我不想在OtherClass2 中创建MyClass someInstance2。如何使用我已经创建的位于OtherClass1 中的someInstance1?
这是我为OtherClass2 提供的信息。我不能使用someInstance1,因为它是私有的。
OtherClass2.h
#include "myclass.h"
#include "otherclass1.h"
class OtherClass2
{
public:
OtherClass2();
private:
MyClass someInstance2;
};
OtherClass2.cpp
#include "otherclass2.h"
OtherClass2::OtherClass2()
{
someInstance2.parse("This is a string.")
}
在整个程序中,我只想要一个 MyClass 实例。有一个更好的方法吗?我总是读到,拥有全局任何东西是不好的做法,但我应该怎么做呢?
编辑:我在这里找到了答案:https://stackoverflow.com/a/2798624/2574608
【问题讨论】:
-
最简单的解决方案是大多数人不喜欢的:全局变量。还有其他可能性,例如共享指针。
-
您可能想使用singleton pattern。 See this answer 代码和一堆有用的链接阅读
-
我在这里找到了答案:stackoverflow.com/a/2798624/2574608
标签: c++