Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在全局空间中访问的私有静态对象_C++_Static_Singleton - Fatal编程技术网

C++ 在全局空间中访问的私有静态对象

C++ 在全局空间中访问的私有静态对象,c++,static,singleton,C++,Static,Singleton,单例怀疑:我如何能够访问全局空间中的私有静态对象?代码如下所示。这个运行得很好 #包括 使用名称空间std; 单件阶级{ 静态单态; 静态void func() { cout您不能。私有成员是私有的,无论上下文如何。您只能从类内的任何位置访问它们 您所做的不是直接访问私有成员,而是使用一个公共函数返回对它的引用,然后可以使用该引用。main函数中的代码不访问私有成员m除了访问私有静态变量之外,我没有看到任何东西s 在main中,您有一个对一个名为s的Singleton的引用,但这不是直接访问私

单例怀疑:我如何能够访问全局空间中的私有静态对象?代码如下所示。这个运行得很好


#包括
使用名称空间std;
单件阶级{
静态单态;
静态void func()
{

cout您不能。私有成员是私有的,无论上下文如何。您只能从类内的任何位置访问它们


您所做的不是直接访问私有成员,而是使用一个公共函数返回对它的引用,然后可以使用该引用。
main
函数中的代码不访问私有成员
m

除了访问私有静态变量之外,我没有看到任何东西<代码>s

在main中,您有一个对一个名为
s
的Singleton的引用,但这不是直接访问私有静态变量
Singleton::s
。您的方法
Singleton::getHandle
返回一个对
Singleton::s
的引用,该引用恰好绑定到main中的
s
但正如您所演示的,您可以将其绑定到
s
以外的其他对象,如
s2

线路

Singleton Singleton::s(47);

正在定义(以及初始化)
Singleton::s
,但如果您试图在main中引用
Singleton::s
,您会得到预期的错误。

因此,这意味着我可以在全局空间中初始化静态私有对象???@govindparihar,实际上您并不是在全局空间中“[初始化]静态私有对象”.The
Singleton Singleton::s(47);
行定义变量
Singleton::s
。也就是说,它表示
Singleton::s
存储在何处并初始化它。当有多个编译单元需要链接在一起时,这一点变得很重要。其中只有一个可以定义
Singleton::s
。您可能还需要阅读。
Singleton Singleton::s(47);