#include<iostream.h>
using namespace std;
class staticdemo
{
static int rollno;
string name;
public:
staticdemo()
{
cout<<"NAME: ";
getline(cin,name);
rollno++;
}
int getname()
{
cout<<name;
return 0;
}
static int getvalu()
{
return rollno;
}
};
int staticdemo::rollno=10;
int main()
{
int i,n;
cout<<"enter the number of studentd:";
cin>>n;
staticdemo s[n];
for(i=0;i<n;i++)
{
cout<<"name:"<<s[i].getname();
cout<<"\nroll no: "<<s[i].getvalu();
}
system("pause");
return 0;
}
我学习C ++,我对堆栈中的对象概念有疑问, 在我上面的程序中,我从用户获取名称,并通过堆栈递增rollno 当我检索列表返回时,它将给出最终更新的堆栈值,如何获取完全更新的rollno值,(如何显示每个名称的唯一rollno), 请发布您的宝贵解决方案
答案 0 :(得分:0)
如果我正确地阅读了您的问题,您希望rollno
变量对于staticdemo
类的每个实例都是唯一的吗?那么,您不能将该成员设为static
,因为static
成员在所有类的实例之间共享。
答案 1 :(得分:0)
我认为我粗略理解你的问题,虽然看起来有点难以得到你需要的东西。
你所做的是部分正确,你使用静态成员变量&#34; rollno&#34;但是,如果你真的想要你需要的东西,你将需要另一个非静态变量来记录索引,例如:
class staticdemo {
static int rollnoGlobal; // this will record the global count, used by everybody
int myRollno; //Non-static, this will record the rollno index for this particular object
string name;
public:
staticdemo() {
cout<<"NAME: ";
getline(cin,name);
myRollno = rollnoGlobal; // This is the step for each individual to remember its index
rollnoGlobal++;
}
int getname() {
cout<<name;
return 0;
}
static int getGlobalRollnoValue() {//return the global count;
return rollnoGlobal;
}
int getMyRollno() { // return the index or you call it rollno for this particular object
return myRollno;
}
};
int staticdemo::rollnoGlobal=10;
int main() {
int i,n;
cout<<"enter the number of studentd:";
cin>>n;
staticdemo s[n];
for(i=0;i<n;i++)
{
cout<<"name:"<<s[i].getname();
cout<<"\nroll no: "<<s[i].getMyrollno();
}
system("pause");
return 0;
}
如果我是正确的,你面临的问题更像是对C ++类中的静态成员变量和方法的理解。这个例子你需要两件事:
附注:
STACK是一个非常具体的编程概念,正如其他人所指出的那样,你的问题显然不需要堆栈。您可以尝试google编程中的堆栈。