作者a3785lexx (Alex)
看板EE_DSnP
标题[请益] Inheriting Class 的 Template???= ="
时间Sat Oct 10 02:48:55 2009
阿...我又来发问啦...orz
继上次的hw1.2.p1後
这次总算是有这个资格来请教hw1.2.p2的问题啦XD
本来是想要睡觉前把hw1.2.p2给解决的
因为前面的两小题越写越有兴致XD(以前没有干过functional object这档事)
好,回到正题
目前小弟我卡在hw1.2.p2c的部分......
因为我不知道继承了母class的子class到底要怎麽用template来写
虽然我写到这个时间回去看题目
才发现按题意好像不需要替Less和Greater作template就可以解决这题了...
但是都写出来了就会想要写完他阿XD
所以这就是我的问题了...
到底要怎麽为一个子class制作template呢??
还是说其实不需要?只要母class有template就可以直接套呢?
但是我想到如果子class自己有其他的function想要作template
应该还是要可以作才行,所以应该替子class作template是合法的吧?
阿...总之我是这样写的...@@
template <class T>
class Compare
{
public:
virtual xxxxxxxxx(const T&, const T&) const = 0;
};
template <class T>
class Less : public Compare
{
public:
xxxxxxxxxxxxxx(const T& _idvA, const T& _idvB) const
{
XXXXXXXXXXXXX
}
};
Greater的部分同理,其中XXXXX的部分是自动屏蔽....
虽然我也知道没有人会想要看那些部分orz
恩,理所当然的我compile不过,所以人在这里发文XD
我所收到的错误信息是:
expected class-name before 「{」 token
连续以上同样两句是针对class Less...和class Greater这两行
还有
不能将「Less<int>*」转换为「Compare<int>*」在initialization中
等数句是针对物件"compare"作polymorphism的时候
所以是这样的写法没有办法建立Less和Greater的template吗?
我卡在这里好久了@@...找了一下有关template的文章
都只有用我写的这种写法...不过好像都没有提到跟inheritance有关的@@
谁来救救我啊orz....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.86.111
1F:→ a3785lexx:呃这...这实在太呃这了... 10/10 02:52
2F:→ a3785lexx:刚刚发完文後想说再试一下後就去睡觉吧... 10/10 02:53
3F:→ a3785lexx:结果就被我试成功了@@ 10/10 02:53
4F:→ a3785lexx:简单来说...我一开始有试过每个class name後面接<T> 10/10 02:53
5F:→ a3785lexx:然後就失败了 10/10 02:54
6F:→ a3785lexx:刚刚才发现...还没有建立template的class name不能加<T> 10/10 02:54
7F:→ a3785lexx:但如果要用到已经有建立template的class 10/10 02:54
8F:→ a3785lexx:就要在被用到的class name後面加<T> 10/10 02:55
9F:→ a3785lexx:其实我忘了教授有没有教了...记性不好@@ 似有若无的 10/10 02:56
10F:→ a3785lexx:如果教授有教过的话就请谁跟我说一下我把这篇文砍了吧XD 10/10 02:56
11F:推 ric2k1:基本上你得到正解了, 是的, 宣告过的class 在使用时要加<T> 10/10 03:37
12F:→ ric2k1:你的第二个问题... 我看不懂你在问什麽? 10/10 03:39
13F:推 tarzan314:我也碰到类似的问题 10/11 19:32
14F:→ a3785lexx:呃...教授是说最後一个问号吗? 10/12 00:40
15F:→ a3785lexx:我其实只是想要问complier的错误讯息是甚麽意思而已XD 10/12 00:40
16F:→ a3785lexx:另外我这题虽然写出来了...可是写的好丑欧囧 10/12 00:40
17F:→ a3785lexx:因为我不知道要怎麽直接assign T的内容... 10/12 00:41
18F:→ a3785lexx:所以就真的只好一个个functional object直接call... 10/12 00:42
19F:→ a3785lexx:结果程式码就变的好长= =" 10/12 00:43
20F:→ a3785lexx:而且重复的部分好多...重复率高达八成XD 10/12 00:43
21F:推 ric2k1:啊, 真的吗? 这题的目的就是要利用这些语法将重复的 code 10/12 01:13
22F:→ ric2k1:share 在一起... 也许找同学讨论一下, 或是明天来找我. 10/12 01:13