
求帮忙看看这段C++代码的错误(用虚函数手段实现2种不同方法逆序输出)
#include<iostream>usingnamespacestd;classbasecla{public:basecla(intn0){n=n0;}virtualv...
#include<iostream>
using namespace std;
class basecla
{
public:
basecla(int n0){n=n0;}
virtual void reverse();
protected:
int n;
};
class cla1:public basecla
{
public:
cla1(int n0):basecla(n0){};
virtual void reverse();
};
class cla2:public basecla
{
public:
cla2(int n0):basecla(n0){};
virtual void reverse();
};
void func(basecla *p)
{
p->reverse();
cout<<endl;
}
void cla1::reverse()
{
int i,*p;
p=new int[n];
cout<<"Enter the data."<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
}
for( ;i>=0;i--) cout<<p[i]<<" ";
}
void cla2::reverse()
{
struct item{
int data;
item *next;
};
item *head=NULL,*temp;
int i=0;
temp=new item;
for(i=0;i<n;i++)
{
cin>>temp->data;
temp->next=head;
head=temp;
temp=new item;
}
for(temp=head;temp!=NULL;temp=temp->next)
{
cout<<temp->data<<" ";
}
}
int main()
{
int n;
cout<<"How many data?"<<endl;
cin>>n;
cla1 c1(n);
cla2 c2(n);
cout<<"--------method1---------"<<endl;
func(&c1);
cout<<"--------method2---------"<<endl;
func(&c2);
} 展开
using namespace std;
class basecla
{
public:
basecla(int n0){n=n0;}
virtual void reverse();
protected:
int n;
};
class cla1:public basecla
{
public:
cla1(int n0):basecla(n0){};
virtual void reverse();
};
class cla2:public basecla
{
public:
cla2(int n0):basecla(n0){};
virtual void reverse();
};
void func(basecla *p)
{
p->reverse();
cout<<endl;
}
void cla1::reverse()
{
int i,*p;
p=new int[n];
cout<<"Enter the data."<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
}
for( ;i>=0;i--) cout<<p[i]<<" ";
}
void cla2::reverse()
{
struct item{
int data;
item *next;
};
item *head=NULL,*temp;
int i=0;
temp=new item;
for(i=0;i<n;i++)
{
cin>>temp->data;
temp->next=head;
head=temp;
temp=new item;
}
for(temp=head;temp!=NULL;temp=temp->next)
{
cout<<temp->data<<" ";
}
}
int main()
{
int n;
cout<<"How many data?"<<endl;
cin>>n;
cla1 c1(n);
cla2 c2(n);
cout<<"--------method1---------"<<endl;
func(&c1);
cout<<"--------method2---------"<<endl;
func(&c2);
} 展开
展开全部
基类里面的reverse函数没有定义。
可以这样定义成空函数
virtual void reverse(){}
或者这样定义成纯虚函数,不用实现
virtual void reverse() = 0;
还有一处代码错误
for( ;i>=0;i--) cout<<p[i]<<" ";
这里开始循环时i=n
所以应该改成
for(i=n-1; i>=0; i--)
cout<<p[i]<<" ";
可以这样定义成空函数
virtual void reverse(){}
或者这样定义成纯虚函数,不用实现
virtual void reverse() = 0;
还有一处代码错误
for( ;i>=0;i--) cout<<p[i]<<" ";
这里开始循环时i=n
所以应该改成
for(i=n-1; i>=0; i--)
cout<<p[i]<<" ";

2024-04-12 广告
**ODU重载连接器**ODU重载连接器是一种高性能、高密度的连接解决方案,广泛应用于各种工业自动化和通信设备中。它采用先进的设计理念和制造技术,具有优异的电气性能和机械强度,能够满足复杂环境下对数据传输和信号稳定的高要求。同时,ODU重载...
点击进入详情页
本回答由上海莘默提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询