   operator overload problem
template<typename T>CMatrix<T> &CMatrix<T>::operator =( CMatrix<T> &AA){if( row != AA.getCMatrixRow () || column != AA.getCMatrixColumn ()){cout << "Matrices are not matching!";return *this;}else {for( int i = 0; i < row; i++){for( int j = 0; j < column; j++){data[j] = AA.data[j];}}return *this;}}CMatrix<T> CMatrix<T>::operator +( CMatrix<T> &A){if( row != A.getCMatrixRow () || column != A.getCMatrixColumn ()){cout << "Matrices are not matching!";return *this;}else {CMatrix<T> temp( row, column);for( int i = 0; i < row; i++){for( int j = 0; j < column; j++){temp.data[j] = data[j] + A.data[j];}}return temp;}}these are my "=","+" overload, is there something wrong? cause my program always breaks in "data[j] = AA.data[j];".
  What exactly does "break" mean? does it not compile? does it give any error messages? What are the values of i and j when it breaks? what are the matrix sizes?Also I'd suggest passing the other matrix in as a const (thats usually what a copy/assign operator does). Only thing I can think of is you have the row/column the wrong way round in the loop but as I can't see any other of your code I can't be sure.   ;  you mind see my entire head and source code?  when executing to this step "A=B+C", program has a interrupt in "CMatrix<T> &operator =( CMatrix<T> &AA);".( A,B,C are all CMatrix<T> type)template <typename T>class CMatrix{public:CMatrix( int = 0, int = 0, float = 0.0);~CMatrix();int getCMatrixRow();int getCMatrixColumn();T **getCMatrixData();int setCMatrixDiagonal(const T *);int setCMatrixDiagonal(T);int setCMatrixRow(int, const T *);int setCMatrixColumn(int, const T *);int setCMatrixElement( int, int, T);int assignDataToOtherDP( T **);int assignPartialMatrix( CMatrix<T> &, int);CMatrix<T> &operator =( CMatrix<T> &AA);CMatrix<T> &operator =( T **A);CMatrix<T> &operator -();CMatrix<T> operator +( CMatrix<T> &A);CMatrix<T> operator -( CMatrix<T> &AA);CMatrix<T> operator *( CMatrix<T> &A);private:int row, column;T **data;};static void Release( float ** pp, int n){for( int i = 0; i < n; i++){delete []pp;}delete []pp;}static float ** matrixPlus( float **a, float **b, int n){float **consequenceP;consequenceP = new float *[n];for( int i = 0; i < n; i++){consequenceP = new float[n];}for( int i = 0; i< n; i++){for( int j = 0; j< n; j++){consequenceP[j] = a[j] + b[j];}}return consequenceP;}static float ** matrixMulti( float **a, float **b, int n){float **consequenceM;consequenceM = new float *[n];for( int i = 0; i < n; i++){consequenceM = new float [n];}if( n > 2){float **a_11, **a_12, **a_21, **a_22;float **b_11, **b_12, **b_21, **b_22;float **c_11, **c_12, **c_21, **c_22; a_11 = new float *[n/2];for( int i = 0; i < n/2; i++){a_11 = new float[n/2];}a_12 = new float *[n/2];for( int i = 0; i < n/2; i++){a_12 = new float[n/2];}a_21 = new float *[n/2];for( int i = 0; i < n/2; i++){a_21 = new float[n/2];}a_22 = new float *[n/2];for( int i = 0; i < n/2; i++){a_22 = new float[n/2];}b_11 = new float *[n/2];for( int i = 0; i < n/2; i++){b_11 = new float[n/2];}b_12 = new float *[n/2];for( int i = 0; i < n/2; i++){b_12 = new float[n/2];}b_21 = new float *[n/2];for( int i = 0; i < n/2; i++){b_21 = new float[n/2];}b_22 = new float *[n/2];for( int i = 0; i < n/2; i++){b_22 = new float[n/2];}c_11 = new float *[n/2];for( int i = 0; i < n/2; i++){c_11 = new float[n/2];}c_12 = new float *[n/2];for( int i = 0; i < n/2; i++){c_12 = new float[n/2];}c_21 = new float *[n/2];for( int i = 0; i < n/2; i++){c_21 = new float[n/2];}c_22 = new float *[n/2];for( int i = 0; i < n/2; i++){c_22 = new float[n/2];}for( int i = 0; i < n/2; i++){for( int j = 0; j < n/2; j++){a_11[j] = a[j];a_12[j] = a[n/2 + j];a_21[j] = a[n/2 + i][j];a_22[j] = a[n/2 + i][n/2 + j];}}for( int i = 0; i < n/2; i++){for( int j = 0; j < n/2; j++){b_11[j] = b[j];b_12[j] = b[n/2 + j];b_21[j] = b[n/2 + i][j];b_22[j] = b[n/2 + i][n/2 + j];}}c_11 = matrixPlus( matrixMulti( a_11, b_11, n/2), matrixMulti( a_12, b_21, n/2), n/2);c_12 = matrixPlus( matrixMulti( a_11, b_12, n/2), matrixMulti( a_12, b_22, n/2), n/2);c_21 = matrixPlus( matrixMulti( a_21, b_11, n/2), matrixMulti( a_22, b_21, n/2), n/2);c_22 = matrixPlus( matrixMulti( a_21, b_12, n/2), matrixMulti( a_22, b_22, n/2), n/2);for( int i = 0; i < n/2; i++){for( int j = 0; j < n/2; j++){consequenceM[j] = c_11[j];consequenceM[j + n/2] = c_12[j];consequenceM[j] = c_21<span style="font-weight:bold;">[j];<br>consequenceM[j + n/<span class="cpp-number">2</span>] = c_22<span style="font-weight:bold;">[j];<br>}<br>}<br><br>Release( a_11, n/<span class="cpp-number">2</span>);<br>Release( a_12, n/<span class="cpp-number">2</span>);<br>Release( a_21, n/<span class="cpp-number">2</span>);<br>Release( a_22, n/<span class="cpp-number">2</span>);<br>Release( b_11, n/<span class="cpp-number">2</span>);<br>Release( b_12, n/<span class="cpp-number">2</span>);<br>Release( b_21, n/<span class="cpp-number">2</span>);<br>Release( b_22, n/<span class="cpp-number">2</span>);<br>Release( c_11, n/<span class="cpp-number">2</span>);<br>Release( c_12, n/<span class="cpp-number">2</span>);<br>Release( c_21, n/<span class="cpp-number">2</span>);<br>Release( c_22, n/<span class="cpp-number">2</span>);<br><br><span class="cpp-keyword">return</span> consequenceM;<br>}<br><br><span class="cpp-keyword">else</span><br>{<br>consequenceM[<span class="cpp-number">0</span>][<span class="cpp-number">0</span>] = a[<span class="cpp-number">0</span>][<span class="cpp-number">0</span>]*b[<span class="cpp-number">0</span>][<span class="cpp-number">0</span>] + a[<span class="cpp-number">0</span>][<span class="cpp-number">1</span>]*b[<span class="cpp-number">1</span>][<span class="cpp-number">0</span>];<br>consequenceM[<span class="cpp-number">0</span>][<span class="cpp-number">1</span>] = a[<span class="cpp-number">0</span>][<span class="cpp-number">0</span>]*b[<span class="cpp-number">0</span>][<span class="cpp-number">1</span>] + a[<span class="cpp-number">0</span>][<span class="cpp-number">1</span>]*b[<span class="cpp-number">1</span>][<span class="cpp-number">1</span>];<br>consequenceM[<span class="cpp-number">1</span>][<span class="cpp-number">0</span>] = a[<span class="cpp-number">1</span>][<span class="cpp-number">0</span>]*b[<span class="cpp-number">0</span>][<span class="cpp-number">0</span>] + a[<span class="cpp-number">1</span>][<span class="cpp-number">1</span>]*b[<span class="cpp-number">1</span>][<span class="cpp-number">0</span>];<br>consequenceM[<span class="cpp-number">1</span>][<span class="cpp-number">1</span>] = a[<span class="cpp-number">1</span>][<span class="cpp-number">0</span>]*b[<span class="cpp-number">0</span>][<span class="cpp-number">1</span>] + a[<span class="cpp-number">1</span>][<span class="cpp-number">1</span>]*b[<span class="cpp-number">1</span>][<span class="cpp-number">1</span>];<br><br><span class="cpp-keyword">return</span> consequenceM;<br>}<br>}<br><br><br></pre></div><!–ENDSCRIPT–><br><!–STARTSCRIPT–><!–source lang="cpp"–><div class="source"><pre><span class="cpp-directive">#include</span><span class="cpp-literal">"CMatrix.h"</span><br><br><span class="cpp-keyword">template</span> &lt;typename T&gt;<br>CMatrix&lt;T&gt;::CMatrix( <span class="cpp-keyword">int</span> r, <span class="cpp-keyword">int</span> c, <span class="cpp-keyword">float</span> initial)<br>{<br>row = r;<br>column = c;<br><br>data = <span class="cpp-keyword">new</span> T*[row];<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br>data<span style="font-weight:bold;"> = <span class="cpp-keyword">new</span> T[column];<br>}<br><br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>data<span style="font-weight:bold;">[j] = initial;<br>}<br>}<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt;::~CMatrix() <br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; <span class="cpp-number">0</span>; i++)<br><span class="cpp-keyword">delete</span> []data<span style="font-weight:bold;">;<br><span class="cpp-keyword">delete</span> []data;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::getCMatrixRow() <br>{<br><span class="cpp-keyword">return</span> row;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::getCMatrixColumn() <br>{<br><span class="cpp-keyword">return</span> column;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>T **CMatrix&lt;T&gt;::getCMatrixData() <br>{<br><span class="cpp-keyword">return</span> data;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::setCMatrixDiagonal(<span class="cpp-keyword">const</span> T *Array) <br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>, j = <span class="cpp-number">0</span>; i &lt; row; i++, j++)<br>{<br>data<span style="font-weight:bold;">[j] = Array<span style="font-weight:bold;">;<br>}<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::setCMatrixDiagonal( T element)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>, j = <span class="cpp-number">0</span>; i &lt; row; i++, j++)<br>{<br>data<span style="font-weight:bold;">[j] = element;<br>}<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::setCMatrixRow( <span class="cpp-keyword">int</span> r, <span class="cpp-keyword">const</span> T *Array)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; row; j++)<br>{<br>data[r][j] = Array[j];<br>}<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::setCMatrixColumn ( <span class="cpp-keyword">int</span> c, <span class="cpp-keyword">const</span> T *Array)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; column; i++)<br>{<br>data<span style="font-weight:bold;">[c] = Array<span style="font-weight:bold;">;<br>}<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::setCMatrixElement ( <span class="cpp-keyword">int</span> r, <span class="cpp-keyword">int</span> c, T element)<br>{<br>data[r][c] = element;<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::assignDataToOtherDP ( T **P)<br>{<br>T **temp = <span class="cpp-keyword">new</span> T *[row];<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; <span class="cpp-number">0</span>; i++)<br>temp<span style="font-weight:bold;"> = <span class="cpp-keyword">new</span> T [column];<br><br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>temp<span style="font-weight:bold;">[j] = data<span style="font-weight:bold;">[j];<br>}<br>}<br><br>P = temp;<br><br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br><span class="cpp-keyword">int</span> CMatrix&lt;T&gt;::assignPartialMatrix( CMatrix&lt;T&gt; &amp;A, <span class="cpp-keyword">int</span> flag)<br>{<br><span class="cpp-keyword">switch</span>(flag)<br>{<br><span class="cpp-keyword">case</span> <span class="cpp-number">1</span>:<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row - <span class="cpp-number">1</span>; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = i + <span class="cpp-number">1</span>; j &lt; column; j++)<br>{<br>data<span style="font-weight:bold;">[j] = A.data<span style="font-weight:bold;">[j];<br>}<br>}<br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br><br><span class="cpp-keyword">case</span> <span class="cpp-number">2</span>:<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>, j = <span class="cpp-number">0</span>; i &lt; row; i++, j++)<br>data<span style="font-weight:bold;">[j] = A.data<span style="font-weight:bold;">[j];<br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br><br><span class="cpp-keyword">case</span> <span class="cpp-number">3</span>:<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">1</span>; i &lt; row; i++)<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; i; j++)<br>data<span style="font-weight:bold;">[j] = A.data<span style="font-weight:bold;">[j];<br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br><br><span class="cpp-keyword">default</span>:<br><span class="cpp-keyword">return</span> <span class="cpp-number">0</span>;<br>}<br><br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; &amp;CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> =( CMatrix&lt;T&gt; &amp;AA)<br>{<br><span class="cpp-keyword">if</span>( row != AA.getCMatrixRow () || column != AA.getCMatrixColumn ())<br>{<br>cout &lt;&lt; <span class="cpp-literal">"Matrices are not matching!"</span>;<br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br><br><span class="cpp-keyword">else</span> <br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>data<span style="font-weight:bold;">[j] = AA.data<span style="font-weight:bold;">[j];<br>}<br>}<br><br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; &amp;CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> =( T **A)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>data<span style="font-weight:bold;">[j] = A<span style="font-weight:bold;">[j];<br>}<br>}<br><br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; &amp;CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> -()<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>data<span style="font-weight:bold;">[j] = -data<span style="font-weight:bold;">[j];<br>}<br>}<br><br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> +( CMatrix&lt;T&gt; &amp;A)<br>{<br><span class="cpp-keyword">if</span>( row != A.getCMatrixRow () || column != A.getCMatrixColumn ())<br>{<br>cout &lt;&lt; <span class="cpp-literal">"Matrices are not matching!"</span>;<br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br><br><span class="cpp-keyword">else</span> <br>{<br>CMatrix&lt;T&gt; temp( row, column);<br><br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>temp.data<span style="font-weight:bold;">[j] = data<span style="font-weight:bold;">[j] + A.data<span style="font-weight:bold;">[j];<br>}<br>}<br><br><span class="cpp-keyword">return</span> temp;<br>}<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> -( CMatrix&lt;T&gt; &amp;AA)<br>{<br><span class="cpp-keyword">if</span>( row != AA.getCMatrixRow () || column != AA.getCMatrixColumn ())<br>{<br>cout &lt;&lt; <span class="cpp-literal">"Matrixs are not matching!"</span>;<br><span class="cpp-keyword">return</span> *<span class="cpp-keyword">this</span>;<br>}<br><br><span class="cpp-keyword">else</span> <br>{<br>CMatrix&lt;T&gt; temp( row, column);<br><br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>{<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> j = <span class="cpp-number">0</span>; j &lt; column; j++)<br>{<br>temp.data<span style="font-weight:bold;">[j] = data<span style="font-weight:bold;">[j] + AA.data<span style="font-weight:bold;">[j]; <br>}<br>}<br><br><span class="cpp-keyword">return</span> temp;<br>}<br>}<br><br><span class="cpp-keyword">template</span>&lt;typename T&gt;<br>CMatrix&lt;T&gt; CMatrix&lt;T&gt;::<span class="cpp-keyword">operator</span> *( CMatrix&lt;T&gt; &amp;A)<br>{<br>T **consequence;<br>consequence = <span class="cpp-keyword">new</span> T*[row];<br><span class="cpp-keyword">for</span>( <span class="cpp-keyword">int</span> i = <span class="cpp-number">0</span>; i &lt; row; i++)<br>consequence<span style="font-weight:bold;"> = <span class="cpp-keyword">new</span> T[row];<br><br>consequence = matrixMulti( data, A.data, row);<br><br>CMatrix&lt;T&gt; temp(row, column);<br>temp = consequence;<br><br><span class="cpp-keyword">return</span> temp;<br>}<br><br><br></pre></div><!–ENDSCRIPT–> ;  in operator + code:CMatrix<T> temp( row, column);...return temp;shouldn't it be?:CMatrix<T>* temp = new CMatrix<T>( row, column);for( int i = 0; i < row; i++) {   for( int j = 0; j < column; j++) { temp->data[j] = data[j] + A.data[j];   }}return *temp;;  A few comments on your code:1. I suggest dropping the 'C' prefix for your class names; IMO, it does not convey any useful information.2. Presumably this is intended to be more of a 'general linear algebra' matrix class than a game/graphics oriented matrix class right? The reason I ask is that a game-oriented matrix class would not typically be implemented using dynamic allocations as shown here (mostly for reasons of efficiency).3. For at least a few reasons (cache locality, less fragmentation of memory, etc.), matrix data of this sort is usually stored as a single 1-d array rather than as a 'jagged' 2-d array. Element access is then usually exposed via the () operator or via [][] notation (the latter is a little trickier to implement than the former - see boost::multi_array for an example of how it can be done).4. Once you're sure you have a handle on the memory management side of things, I'd recommend swapping out the manual memory management for an RAII container such as std::vector.5. It looks like you have an error in your destructor, here:for( int i = 0; i < 0; i++)6. Why do some of your functions have int return values, but only ever return 0?7. Your setCMatrixDiagonal() function appears to assume that the matrix is square.8. It doesn't look as if you've followed the Rule of Three, which is likely to cause problems.There appears to be a lot of questionable memory management stuff going on here, and it looks like there are some potential ownership and general pointer-related issues as well. Based on a quick scan of your code, I'm fairly certain there are more problems here than those that I mentioned above.Getting all of this stuff right 'manually' is a good exercise, but for production code, I think you'd want to take a different approach than what you've shown here. Switching to std::vector for your array data storage will probably solve about 90% of the problems (and potential problems) with your code, so that'd probably be a good place to start.   ;  thanks a lot. but i'm still confused, as a tyro i think i should read more books and do more exercise.  by the may, do you have a matrix class? i think it would be more explicit with a correct matrix class.   ;Quote:Original post by sobeitthanks a lot. but i'm still confused, as a tyro i think i should read more books and do more exercise.  by the may, do you have a matrix class? i think it would be more explicit with a correct matrix class.See my post in your other thread...   