2013-06-11 18 views
0

說我經常使用模板類Foo與模板類型int非常頻繁:你如何命名一個特定類型的模板的簡寫?

Foo<int> number; 
Foo<int> location; 
... 

我知道有一種方法,使這個由這個特定的模板定義的名稱更漂亮的類型,這樣我就可以有相當的(但漂亮),代碼如下所示:

FooInt number; 
FooInt location; 
... 

我相信這可以用編譯器指令#define做,但我不知道的細節。另外,有沒有辦法只是實施一個新的類FooInt定義爲Foo<int>

+3

'typedef' ?????? – Pubby

+2

與這個問題無關,但「IFoo」在這裏並不是一個好名字......在許多編碼標準中,它提出了一個抽象界面,但它肯定不是。 'FooInt'也許?只是說... – syam

+0

@syam我更新了這個問題,以免混淆任何人。接得好。 –

回答

11

您可以使用常規typedef創建模板類型的別名時,所有的參數是固定的:

typedef Foo<int> FooInt; 
4

所有你需要的是一個別名:

using FooInt = Foo<int>; 

注意,這僅僅是在C++ 11中可用。

+1

這僅僅是C++ 11。 – SigTerm

0

typedef是答案,但作爲信息的補充...

另外,有隻實現了一類新FooInt 被定義爲int的一個Foo的方法嗎?

是的,只要你的聲明專門類如下:

class FooInt : public Foo<int> { 
} 

注:我紙條,上面寫着,這是一個很好的路要走,但只認爲這是可行的。

+0

請注意,使用此代碼,FooInt顯然不會與Foo 相同。 –

+0

是的,我只是在這裏處理「替代」部分。以此爲信息的補充,而不是答案;-) –

+0

是的,我今晚在'java'的心情;-)謝謝。 –

1

除了已經提到的兩個版本,我建議Foo<int>。它是自我記錄。其他人必須瞭解它,如果你稍後看看你自己的代碼(可以說2年),你也必須理解它。在這些情況下Foo<int>比替代品更好。

相關問題