استفاده از typeid در دستور if
سلام دوستان.
فرض کنیم یک template function داریم به این صورت:
template<typename T> int func(T inp)
{
.....
}
همونطور که مشخصه این تابع یک ورودی از نوع T و خروجی int خواهد داشت.
حالا فرض کنیم در بدنه تابع قصد دارم دستور if قرار بدم و در پرانتز مشخص کنم که اگر تایپ ورودی برای مثال int بود یه سری دستور یا اگر double بود یه سری دستور داشته باشیم و الی آخر.
در این باره سرچ کردم و در نهایت به این رسیدم که باید فایل سرآیند typeinfo رو include کنم و در پرانتز به این صورت بنویسم که:
if(typeid (inp) == typeid(int))
......
که در نهایت به جای int تایپهای دیگه هم میتونه قرار بگیره.
این موضوع رو مطرح کردم که نظر شما رو جویا بشم که آیا این روش درسته یا خیر و اگر اینطور نیست پیشنهاد شما چیه برای این کار؟ چون چند باری شده که به این موضوع تنوع تایپهای ورودی برخوردم.
متشکرم.
نقل قول: استفاده از typeid در دستور if
نقل قول: استفاده از typeid در دستور if
میتونی برای انواعی که در نظر داری تمپلیت خاص ایجاد کنی.
// Example program
#include <iostream>
#include <string>
using namespace std;
template<typename T> int func(T inp)
{
cout << inp << endl;
}
template<> int func(int inp)
{
cout << inp << " is int" << endl;
}
int main()
{
std::string name = "sample string";
func(name);
func(4);
}
نقل قول: استفاده از typeid در دستور if
نقل قول:
نوشته شده توسط
parvizwpf
ممنون از لطفت پرویز جان.
نقل قول:
نوشته شده توسط
حامد مصافی
میتونی برای انواعی که در نظر داری تمپلیت خاص ایجاد کنی.
// Example program
#include <iostream>
#include <string>
using namespace std;
template<typename T> int func(T inp)
{
cout << inp << endl;
}
template<> int func(int inp)
{
cout << inp << " is int" << endl;
}
int main()
{
std::string name = "sample string";
func(name);
func(4);
}
بسیار عالی! specialization رو از قلم انداخته بودم http://www.pic4ever.com/images/Fuzzy_Emoticon_--fd.gif
لطف کردی حامد جان.