作者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