Class Template in Visual C++

Hello,

I formed class template that represent two dimensional array :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template<class T>
class Array2D {
protected:  

public:
      T *data;

        const unsigned rows, cols, size;
        Array2D(unsigned r, unsigned c) : rows(r), cols(c), size(r*c) {

      data = new T[size];
        }
        ~Array2D() { delete data; }
        void setValue(unsigned row, unsigned col, T value) { 
                data[(row*cols)+col] = value;
        }
        T getValue(unsigned row, unsigned col) const {
                return data[(row*cols)+col];
        }
};


And there is present one dimensional data array

array<double>^ input={20,4,6,15,7,2,1,8,9};

I have function it's inputs are class template and one dimensional data array.I set one dimensional array values to class template :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void function(Array2d<double> &x,array< double>^ input,int width,int,height)
{


double temp;
temp1=0;

double temp2;

int i,j;

// assign input array values to two dimensional array
for(i=0;i<width;i++)
for(j=0;j<height;j++)
{
{ temp2=input[temp1];
  x.setvalue(i,j,temp2);
  temp1=temp1+1;
}
}

}

After all I declared 3x3 class template:

Array2D<double>A(3,3);
I sent it to function:

function(A,input,3,3);

And I tried to print Array2D values:

1
2
3
4
5
6
7
double temp;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
{temp=A.getValue(i,j)

Console:Write("{0}",temp);}}


I executed this applicaiton in CLR Application in Visual Studio 2008 amd it worked .But I want to implement this code on Windows Form Application,and it gave error like these on Form Application:

1
2
error C2065: 'Array2D' : undeclared identifier
error C2065: 'A' : undeclared identifier


How can I overcome this error or where should I locate class template?

Best Regards...

This isn't answering your question, but do you realise that your indexing calculation is incorrect? Your matrix should remember its dimensions for a start.

Also the destructor shouldn't use the scalar delete, as you allocated an array.
this beeing your post, look @ it fist
http://www.cplusplus.com/forum/general/12310/

where in the new project did you paste the original code? Full src/project?
Last edited on
Topic archived. No new replies allowed.