c++的一个类的多个对象如何共用一个变量?不要全局变量,因为我不想能从外部访问它

如题所述

第1个回答  2014-06-28
静态数据成员:static 类型 变量名;这个成员是写在类中的
是你需要的吗?追问

我加了个static变量,先暂时加在public里,
static size;
然后
类 变量a;
a.size=0;
a.size+=1;
类 变量b;
b.size+=1;
cout << b.size编译器报错了,说ld 返回了退出状态1,怎么回事

static int size

追答

static变量初始化了吗

类型 类名::变量名 = 某个确定的值
如:int A::size = 0

追问


static int size = 0;
编译器报iso c++禁止在类中初始化static成员

追答

类中写static int size;
类外 :int 类名::size = 0;

追问

编译器报非法使用合理的名字

invalid use of qualified-name 'size'

追答

你是怎么写的到底

追问

还没好啊,我在public里声明了个
static int user_group_size;
然后在main函数里写
int User::user_group_size = 0;
编译器还是报错啊,原因没变

追答

不能在main函数里面,就像全局变量那样子初始化

追问

好了,写外面好了,非常感谢

本回答被提问者采纳

如何在C++内多个CPP共享同一个变量
1.全局变量的定义和普通变量的定义相同,只是在别的cpp文件中使用前需要用extern修饰符声明。例如:主文件中定义 int global = 0;别的文件里面用 extern int global;申明一下就可以用了。2.extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模...

C++ 为什么不鼓励使用全局变量
试想,如果某个类使用了全局变量,则移植该类的时候,必须将全局变量也一起移植。更可怕的是,如果这个全局变量还是一个对象,并且初始化也在不同的类中实现,那么所有这些代码将被永久捆绑在一起,无法分离了。任何一个与此全局变量相关联的代码一旦有改动,即可对其他使用该变量的代码产生不可预知的影...

c++中类的对象和成员变量的区别
全局变量,在该变量之后定义的函数都可以访问 局部变量,只能在定义的函数中访问 而C++中多出了成员变量,成员变量通常是私有。成员变量依附于对象存在,有了对象,成员变量才有内存 而成员变量的可以被本类的所有成员函数直接访问的。

在C++中,如果一个函数中有多个变量,在调用后希望全部保留以供继续使用...
可以将变量设置为【全局变量】,使得改变量在整个程序中起作用 当然,也可以设置为【静态变量】,效果是一样的 建议看一下变量的作用域和生存期方面的知识,就会很容易懂了 希望对你有帮助o(∩_∩)o

c++ 一个变量在多个cpp中使用问题
全局变量处输入 extern int a_;然后就可以用了

一个C++工程中不同文件之间的函数如何互相调用?
在2.cpp写 extern int a;(在全局范围写就可以了)之后就可以用a的值了。如果类型不是int,请自行修改。对于问题补充:增加一个与a同类型的全局变量,把a赋值给它,然后用上述方法。或者增加一个a的指针类型的全局变量,把a的地址赋值给它,然后用上述方法。

C++\/C的项目里怎么共享“全局变量”呢?
这是一个外部文件定义的全局变量,但在C\/C++中,该关键字并非强制,不加也不会出错。void func(void){ gvar ++;\/\/gvar自加,也就是改变值的操作。 printf("%d\\n", gvar);\/\/输出gvar,也就是引用其值的操作。 \/\/以上两个操作表明,在这个文件中,gvar是可被读写的。} ...

C++类中成员属性,对本类而言,成员属性是否可以理解为本类的全局...
不可以这么理解的哟,全局变量是公用的,谁都可以修改的,而实例化后,类的成员变量只能是实例化的对象所拥有。我举个例子,你们家是一个class,你家里的每一个人可以理解为类的实例化对象,比如说你的手为成员变量,这个是成员变量只有你自己可以控制使用,而别的实例化对象无法使用。

C++类的成员函数中创建静态变量会被类的所有对象共享么
是的。成员函数中的静态变量也是全部对象共享的。

C++类中静态变量和静态方法使用介绍
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全...

相似回答