私がテンプレートのクラスとしてenum class
をテンプレートとして使うクラスがあるとします。ここでは、完全な(ささい)な例です:`enum class`を使った冗長な構文
enum class AnimalType { Dog, Cat, Hamster };
template <AnimalType>
class Animal {
public:
std::string speak();
};
template <>
std::string Animal<AnimalType::Dog>::speak() {
return "Woof";
}
template <>
std::string Animal<AnimalType::Cat>::speak() {
return "Meow";
}
template <>
std::string Animal<AnimalType::Hamster>::speak() {
return "Iä! Iä! Cthulhu fhtagn!";
}
int main() {
Animal<AnimalType::Dog> dog;
Animal<AnimalType::Cat> cat;
Animal<AnimalType::Hamster> hamster;
cout << dog.speak() << endl << cat.speak() << endl << hamster.speak() << endl;
}
は冗長と冗長Animal<AnimalType::Hamster>
構文を回避する方法はありますか?
あなたが長いったらしいクラス名の短いエイリアスを定義するには、 'typedef'を使用することができ、それはかなりそれです。 –