读书人

求高手解答修改上面的程序

发布时间: 2013-01-21 10:15:38 作者: rapoo

求高手解答,修改下面的程序
这是我们当时的一道考试题,要求找出错误并改正。程序实现了比较基类中的数据成员是否相等。我编译试了一下,错误在于A& a =* new B(1,1), b= * new B(1,2);处,
error C2259: 'A' : cannot instantiate abstract class due to following members:
可我没发现有什么问题啊(水平太菜了)。。。求解答

#include <iostream>
using namespace std;

class A
{
protected:
int i;
public:
A(int x):i(x){}
virtual int operator!(){return i;}
virtual int operator==(A&)=0;
};

class B:public A
{
protected:
int i;
public:
B(int x, int y):A(x),i(y){}
int operator==(A& x){
return !x==A::i;
}
};


int main()
{
A& a =* new B(1,1), b= * new B(1,2);
if (a==b)
{
cout << "OK" << endl;
}
return 0;
}
[解决办法]


//当我看到这个程序,我在心里骂了一万遍,什么破题!
class A
{
protected:
int i;
public:
A(int x):i(x){}
int operator!(){return i;}
virtual int operator==(A&)=0;
};

class B:public A
{
protected:
int i;
public:
B(int x, int y):A(x),i(y){}
int operator==(A& x)
{
return !x==A::i;
}
};


int main()
{
A& a =* new B(1,1);
A&b= * new B(1,2);
if (a==b)
{
cout << "OK" << endl;
}
return 0;
}

[解决办法]
可以使用A *a = new B(1,1), *b= new B(1,2);

读书人网 >C++

热点推荐