Sie die Idee der parametrisierte Typen und parametriert Werte conflating: int
in diesem Fall wie folgt -
Sie können Template-Klasse für die enum CompCriteria
zugrunde liegenden Typ spezialisiert haben. Ein Vorlagenparameter kann ein Typ oder eine Konstante sein. Zum Beispiel:
template <typename T>
struct Foo;
gegen ..
template <int N>
struct Foo;
Es ist wie Sie basiert auf einer Enum konstant, sondern als eine Art wollen sich spezialisieren Ihre Vorlage aussieht. Das heißt, müssen Sie sagen:
enum CompCriteria{ByKey,ByValue,ByeKeyAndValue};
template<CompCriteria>
struct X;
// Specialization for ByKeyAndValue
//
template<>
struct X<ByeKeyAndValue>
{
};
int main()
{
X<ByeKeyAndValue> x; // instantiate specialization
return 0;
}
Außerdem können Sie nicht auf Aufzählungen verweist den namespace
Operator. Wenn Sie Ihre Enums kapseln möchten, müssen Sie sie in einen Namespace einbinden:
namespace CompCriteria
{
enum type {ByKey,ByValue,ByeKeyAndValue};
}
danke, es funktioniert; –