首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指针有关问题求解答

2012-06-10 
指针问题求解答#includeiostream#includestringusing namespace stdclass Animal{protected:string n

指针问题求解答
#include<iostream>
#include<string>

using namespace std;

class Animal{
protected:
string name;
int shoutNumber;
virtual string getShoutSound()const{return " ";}
public:

Animal()

name="No Name";shoutNumber=3;  
}
 
Animal(string n)
{
name=n;shoutNumber=3;
}

string shout()
{
string result=" ";
for(int i=0;i<shoutNumber;i++)
{
result+=getShoutSound()+',';
}

return "my name is:"+name+" "+result;
}

};

class Cat : public Animal{
protected:
string getShoutSound()const{return "miao";}
public:
Cat() : Animal(){}
Cat(string nn) : Animal(nn){}
};

class Dog : public Animal{
protected:
string getShoutSound()const{return "wang";}
public:
Dog() : Animal(){}
Dog(string nn) : Animal(nn){}
};

class Sheep : public Animal{
protected:
string getShoutSound()const{return "mie";}
public:
Sheep() : Animal(){}
Sheep(string nn) : Animal(nn){}
};


struct Sport{
Animal* anl;
Sport* next;
};

Sport* addOne(Sport* head,Sport *p)
{


if(head==0)
{

head=p;

}
else
{

Sport* pp=head;
while(pp->next !=0)pp=pp->next;
pp->next=p;
p->next=0;
}


  return head;
}



void dismiss(Sport* head)
{
for(Sport *p=head;p!=0;p=head)
{
head=head->next;
delete p->anl;
delete p;
}
}
void main()
{
Sport* head=new Sport;
head->anl=new Cat("abc");

Sport* anp=new Sport;
cout<<"ok\n";
anp->anl=new Cat("why");
cout<<"ajkidn\n";
head=addOne(head,anp);
  for(Sport *qq=head;qq!=0;qq=qq->next)
cout<<qq->anl->shout()<<endl;
}





为什么在
else
{

Sport* pp=head;
while(pp->next !=0)pp=pp->next;
pp->next=p;
p->next=0;
}


系统会报错啊????

[解决办法]
head->anl=new Cat("abc");
head->next=0;//加上这句不然无法判断while(pp->next !=0)pp=pp->next;

热点排行