変数パラメータ付きクラスの構造関数


#include <iostream>

using namespace std;



class test

{

public:



    test(int a,...);

    ~test();

    void setdata();

    void showdata();



    int **data;

    int *N;  // 

    int n;  // 

};



test::test(int a,...)

{

    int *p=&a;

    n=0;

    while (*p!=0)

    {

        n++;

        p++;

    }



    data=new int *[n];

    N=new int[n];

    p=&a;

    int i=0;

    while(*p!=0)

    {

        data[i]=new int[*p];

        N[i]=*p;

        p++;

        i++;

    }

}



test::~test()

{

    for (int i=0;i<n;i++)

    {

        delete[] data[i];

    }

    delete[] data;

    delete[] N;

}



void test::setdata()

{

    int k=0;

    for (int i=0;i<n;i++)

    {

        for (int j=0;j<N[i];j++)

        {

            data[i][j]=k++;

        }

    }

}



void test::showdata()

{

    for (int i=0;i<n;i++)

    {

        for (int j=0;j<N[i];j++)

        {

            cout<<data[i][j]<<"  ";

        }

        cout<<endl;

    }

}



int main()

{

    test x(3,4,5,10,6,7,8,0);    // 0, 。 。



    x.setdata();

    x.showdata();



    system("pause");

    return 0;

}