在下面的代碼中,Foo<T>::setValue
適用於我的目的,除非其中T
是類枚舉,名爲TYPE
例如, Bar::TYPE
和Baz:TYPE
。專門針對枚舉類型參數的成員模板
因此,我很感謝Foo<T>::setValue
的幫助,沒有命名Bar
和Baz
,因爲可能有幾十個這樣的類。
class Bar
{
public:
enum TYPE{ ONE , TWO };
};
class Baz
{
public:
enum TYPE{ SIX , TEN };
};
template<typename T>
class Foo
{
public:
void setValue(){} // Need a different setValue if T is a class enum
private:
T m_value;
};
int main()
{
Foo<int> f1;
Foo<Bar::TYPE> f2;
Foo<Baz::TYPE> f3;
return EXIT_SUCCESS;
}
我不明白這個問題 - 如果類型是枚舉,你希望它做什麼?你可以在''is_enum''中使用'enable_if'(http://msdn.microsoft.com/en-us/library/bb982983.aspx) – Flexo
@awoodland我來看看'is_enum'。如果'T'是一個類枚舉(稱爲TYPE),我想要一個不同的'Foo :: setValue'。 –
Olumide