問題:想設(shè)計(jì)一個(gè)類模板,其中的某種特化或者半特化與其他特化略有不同,可能只是增加個(gè)別成員函數(shù)。應(yīng)該如何實(shí)現(xiàn)?重載還是繼承?
具體問題:比如說想設(shè)計(jì)一個(gè)矩陣類模板< typename T, int numberOfRows, int numberOfColumns >,現(xiàn)在其他特化都可以通用一個(gè)模式,只是在bool型矩陣的時(shí)候想增加一個(gè)⊙(布爾乘法)函數(shù),應(yīng)該怎么做?
最開始想到的是重載,重載矩陣類的bool特化確實(shí)可以實(shí)現(xiàn),但是大部分代碼相同,這個(gè)工作是不是有點(diǎn)重復(fù)?
然后想到繼承,但是類模板特化的繼承只能繼承其他特化或者其他類,比如不能夠class Test< bool > : public Test< bool >,如此一來,我怎么才能得到原本的bool特化的部分并增加新的函數(shù)呢?
于是我現(xiàn)在陷入了窘境,希望得到大家的幫助。謝謝。
(注:不想做一個(gè)新的類來繼承模板的bool特化,比如,不想class BoolMatrix : public Matrix< bool >。 )