گرفتن پارامتره ی Variadic Template - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

گرفتن پارامتره ی Variadic Template

+3 امتیاز

من می خوام بتونم به این args دسترسی داشته باشم و ست کنمش تو ارایم

باید ی راه حلی باشهfrown

 

template <typename ...Types> class TVector 
{
public:
	void*	mArrays[sizeof...(Types)];

	void Push(Types* ...args)
	{
		for (size_t i = 0; i < sizeof...(Types); i++)
			mArrays[i] = (void*)args[i];
	}
};

TVector<int, int, int> gArray3Line;
gArray3Line.Push(nullptr, nullptr, nullptr);

 

سوال شده فروردین 27, 1393  بوسیله ی سارینا (امتیاز 17)   1 3 5
دوباره تگ گذاری شد مرداد 28, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز

میشه ولی نه به اون شکل  که نوشتی

در ضمن چون ورودی int هست از nullptr نمیتونی استفاده کنی .

#include <iostream>

using namespace std;

template <typename T,typename ...Types>
class TVector
{
public:
    TVector():
        i(0){}

    T mArrays[sizeof...(Types)+1];

    void Push(const T& val,const Types& ... args)
    {
        cout<<val<<"\n";
        mArrays[i++]=val;
        Push(args ... );
    }
private:
    void Push(){i=0;/* reset the counter */}

    template <typename T2,typename ...Types2>
    void Push (const T2& val,const Types2& ... args)
    {
        cout<<val<<"\n";
        mArrays[i++]=val;
        Push(args ... );
    }

    int i;//counter
};

int main ()
{
    TVector<int, int, int> gArray3Line;
    gArray3Line.Push(12, 11,34);//ok
    //  gArray3Line.Push(12, 11);//error
    // gArray3Line.Push(12, 11,34,34);//error
}

 

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