이 TYPE
이라는 클래스 열거 형인 경우를 제외하고는 아래 코드에서 Foo<T>::setValue
이 내 용도로 적합합니다. Bar::TYPE
및 Baz:TYPE
. 같은 클래스의 수십있을 수 있기 때문에열거 형 인수에 대한 특수 멤버 템플릿
따라서, 나는 Bar
및 Baz
이름을 지정하지 않고 Foo<T>::setValue
을 전문으로 도움을 주셔서 감사합니다 것입니다.
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