تابعی از یک کلاس template که فقط روی یک نوع کار کند - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تابعی از یک کلاس template که فقط روی یک نوع کار کند

+2 امتیاز

اگر من کلاسی به این شکل داشته باشم :

template<typename T>
class A
{
    public:
    ///.....
    private:
       std::vector<T> myVector;
  
}

آیا راه ساده ای هست که تابع عضو کلاسی بنویسم که فقط برای داده های مثلا int کار کنه ؟ 

سوال شده شهریور 7, 1393  بوسیله ی PSPCoder (امتیاز 1,301)   14 40 57
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز

کار نسبتا راحتی هستش از static_assert و std::is_same استفاد کنید

#include <iostream>
#include <vector>

template<typename T>
class A
{
public:
	void func(){
		static_assert(std::is_same<T, int>::value, "T must be int");
	}
private:
	std::vector<T> myVector;

};

int main(int argc, char* argv[])
{
	A<int> a;
	a.func();//ok
	A<char> b;
	//b.func();//error
}

 

 

پاسخ داده شده شهریور 7, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
...