C++ 类模版继承非类模版的问题

#include<iostream>usingnamespacestd;classPoint{intx,y;public:Point(inta,intb){x=a;y=b... #include <iostream>
using namespace std;

class Point{
int x,y;

public:
Point(int a, int b)
{
x = a;
y = b;
}

void display()
{
cout<<x<<","<<y<<endl;
}
};

template <class T>
class Line: public Point{
T x2, y2;

public:
Line(int a, int b, T c, T d):Point(a, b)
{
x2 = c;
y2 = d;
}

void dispaly()
{
Point::display();
cout<<x2<<","<<y2<<endl;
}

void show()
{
cout << x2<<","<<y2<<endl;
}
};
int main(void)
{
Point a(3, 8);
a.display();

Line <int> l(1, 2, 5, 9);
l.display();

Line <double> ac(1, 2, 9.5, 8.9);
ac.display();
ac.show();
return 0;
}

g++ 1.c -o 1之后
在ac.display()中,为什么不能显示x2,y2,只显示了Point中的x,y,为什么我又写了个show就能显示出来,怎么样才能达到我的目的,在display中,先显示x,y,然后显示x2,y2。

还有,为什么提问会有失效的情况?
展开
 我来答
wanglixin1001
2012-10-16 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:888万
展开全部
因为你在Line里面的函数是dispaly而不是display(),这应该是你输入错误导致的。
把Line里面的dispaly修改为display()就可以了。否则,只会调用继承的基类的display函数,即输出1,2,而不会输出5,9.
另外一点,最好将Point类中的display()函数声明为virtual类。这样还可以使用动态绑定功能。即将基类Point类型的指针或者引用绑定到Line对象上,亦可以调用Line类的display()函数。
yanjian1989127
2012-10-16
知道答主
回答量:28
采纳率:0%
帮助的人:14.5万
展开全部
将模板类Line中的成员方法 void dispaly() 改成 void display() 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式