Sinfning sarlavha fayli quyidagicha:
enum class My_Type {
type1,
type2
};
template <int dim>
class My_Class {
public:
My_Class() {};
template <My_Type p_type>
void
func();
}
cpp fayli:
template <int dim>
template <My_Type p_type>
void
My_Class<dim>::func() {
if (p_type==My_Type::type1) {
...
} else {
...
}
....
}
qo'ng'iroq quyidagicha:
My_Class<2> my_obj;
my_obj.template func<My_Type::type1>();
Hammasi yaxshi tuzilgan, lekin bog'lanmaydi:
'Undefined symbols for architecture x86_64'
Buning sababi, kodning bir qismi kutubxona ichida. Shunday qilib, men aniq ifodalashim kerak.
Sinf uchun bu aniq:
template class My_Class<2>;
Savol shundaki, bunday holatda shablonli funktsiyani qanday yaratishim mumkin? Har qanday fokuslar yoki vaqtinchalik echimlar?
p/s/ enum
dan ko'rib turganingizdek, agar muhim bo'lsa, men C++ 11 dan foydalanaman.
p/p/s/ Men bir nechta havolalarni ko'rib chiqdim, lekin yechimni ko'rganimga ishonchim komil emas.
int
parametriga ega bo'lish faqat bir nechta mumkin bo'lgan misollarga ega bo'lishi kerak kabi ko'rinmaydi.) - person aschepler   schedule 04.06.2013