class - c++ 类中的static 成员变量可以通过cin输入吗
天蓬老师
天蓬老师 2017-04-17 12:07:18
0
2
529

如果可以,如何实现?

比如,Student类中有一个满分标准是需要用户输入的
Class Student{
int static StandardFullScore;
}
貌似
cin >> Student :: StandardFullScore;


构建一个对象后Student s;
然后 cin >> s.StandardFullScore;

这两种方法都不行?

是不是本来这么做就是不可以的呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆 (2)
伊谢尔伦
#include using namespace std; class Demo{ public: int a; static int c; }; static int b; int main(){ Demo d=Demo(); cin>>b; cout<<"b="<>d.a; cout<<"the result="<>Demo::c; //error //cout<<"c="<Demo::c=3

是错误的,编译器提示不知道c的类型。在来看输入cin>>Demo.c这样为啥不行呢,可以知道,内部首先是转换成basic_istream(cin,&c),而此时编译器并不知道静态成员变量c是什么类型,traits特性不能特化成功,因此调用失败。

那么,这里替代做法就是输入一个变量,然后通过赋值或者成员函数来设置Student :: StandardFullScore;即可

    阿神

    怀疑题主只是忘记定义静态变量了,静态变量在类中是声明,如果只声明未定义但不调用是不会有问题的,但如果未定义还使用了这个变量,就会编译错误了。

    #include  #include  using namespace std; class zz{ public: static int b;//声明静态变量 }; int zz::b;//定义静态变量 int main() { cin>>(zz::b);//正常使用 cout<<(zz::b); return 0; }
      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!