如果可以,如何实现?
比如,Student类中有一个满分标准是需要用户输入的
Class Student{
int static StandardFullScore;
}
貌似
cin >> Student :: StandardFullScore;
和
构建一个对象后Student s;
然后 cin >> s.StandardFullScore;
这两种方法都不行?
是不是本来这么做就是不可以的呢?
如果可以,如何实现?
比如,Student类中有一个满分标准是需要用户输入的
Class Student{
int static StandardFullScore;
}
貌似
cin >> Student :: StandardFullScore;
和
构建一个对象后Student s;
然后 cin >> s.StandardFullScore;
这两种方法都不行?
是不是本来这么做就是不可以的呢?
怀疑题主只是忘记定义静态变量了,静态变量在类中是声明,如果只声明未定义但不调用是不会有问题的,但如果未定义还使用了这个变量,就会编译错误了。
#include <cstdio>
#include <iostream>
using namespace std;
class zz{
public:
static int b;//声明静态变量
};
int zz::b;//定义静态变量
int main()
{
cin>>(zz::b);//正常使用
cout<<(zz::b);
return 0;
}
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
首先c++中规定类的静态成员变量必须是在类中声明,在类外定义,从上面注释的处看到,直接调用赋值语句
是错误的,编译器提示不知道c的类型。在来看输入cin>>Demo.c这样为啥不行呢,可以知道,内部首先是转换成basic_istream(cin,&c),而此时编译器并不知道静态成员变量c是什么类型,traits特性不能特化成功,因此调用失败。
那么,这里替代做法就是输入一个变量,然后通过赋值或者成员函数来设置Student :: StandardFullScore;即可