3
我有一個這樣的情況:C++:枚舉類型作爲模板參數 - 全球範圍內
template<typename myEnumType>
int foo(const myEnumType & shortest_paths_algorithm)
{
...
}
int main()
{
myEnumType enum_type_istance;
int a = foo(enum_type_istance)
}
,如果我在函數聲明之前的一切聲明
typedef enum {AAA, BBB} myEnumType;
是確定的。雖然,如果我寫創建enum_type_istance變量之前,上面的線,得到錯誤
沒有匹配函數調用「富(主():: myEnumType &)」 候選人是:模板INT FOO(常量myEnumType &)
爲什麼?我怎麼能在main中定義type? 謝謝!
使用本地類型作爲模板類型參數是一個C++ 11功能。確保你的編譯器支持它,並且你正在使用C++ 11模式(如果可能的話)。 [代碼正在工作,現場示例](http://coliru.stacked-crooked.com/a/beea71d10a306b08) – dyp
(順便說一句,我知道沒有理由你不應該只使用'enum myEnumType {AAA,BBB};'在C++中) – dyp
但爲什麼如果我寫'typedef int myEnumType;'那麼它也適用,如果我寫在main()中? 'int'和'enum'有什麼區別? – user1403546