类的定义就不复制出来了
void main()
{
employee *head , *p ;
head = p = NULL ;
char a = 'a';
while( a!= '0')
{
cout << "输入管理人员请按1\n输入计时工请按2\n输入计件工请按3\n输入销售人员请按4\n停止输入请按0\n\n请输入选择:" << endl ;
cin >> a ;
cout << endl ;
switch( a )
{
case '1' :
p = input1( p ) ;
if( head == NULL )
{
head = p ;
}
break ;
case '0':
break ;
default :
cout << "输入错误!" << endl << endl ;
}
cout << endl ; //head 和 p 运行到这行发生变化
}
}
其中在倒数第三行,指针head 和 p 的值没有改变,但是指针所指的类的内部数据全部都初始化了,据同学说这是因为
“这几个都是局部变量 遇到}后作用域结束 值都被压栈回去了”
表示看不懂,然后在这里求原因和解决办法,在线等
这是input1函数,然后head 和p 都是虚基类指针,不能new。请问要怎么解决
employee* input1( employee *&p )
{
long number;
char name[20];
long telephone;
double salary;
cout << "请依次输入 编号 姓名 电话 工资:" << endl ;
cin >> number >> name >> telephone >> salary ;
manager A( number , name , telephone , salary );
if( p != NULL )
{
p->next = &A ;
}
p = &A ;
return p ;
}
好像就是这个问题,但是我的head 和p都是基类指针
employee *p = new employee;
是错误的操作,这样要怎么办?input1 函数也贴出来了,麻烦再帮忙看看可以吗
input1就一输入链表数据的函数,在里面对p所指的类赋值之后,程序运行到
“cout << endl ; //head 和 p 运行到这行发生变化”
的时候,p保存的地址值没变化,但是p所指的类的数据全部初始化了,这不知道是为什么,据说是作用域问题
就这样看基本找不出问题来。一直不明白你说的什么类数据全部初始化是什么个意思。