Help with Non-Aggregate Type Error

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Ian825
    New Member
    • Mar 2007
    • 1

    Help with Non-Aggregate Type Error

    I need help writing a function for a program that is based upon the various operations of a matrix and I keep getting a "non-aggregate type" error. My guess is that I need to dereference my pointers, but I'm not sure. Please help.

    The code:
    void equate(matrix *A, matrix *B)
    {
    int i, j;
    assert(A.row_di m == B.col_dim && A.col_dim == B.col_dim);

    for(i=0; i < A.row_dim; i++)
    for(j=0; j < A.col_dim; j++)
    A.element[i][j] = B.element[i][j];
    }

    A and B are supposed to be two different matrices that I will be setting equal to each other...I guess it's sorta like the classic "Swap Function" problem.

    The Error:
    create.h: In function `void equate(matrix*, matrix*)':
    create.h:115: request for member `row_dim' in `A', which is of non-aggregate
    type `matrix*'
    create.h:115: request for member `col_dim' in `B', which is of non-aggregate
    type `matrix*'
    create.h:115: request for member `col_dim' in `A', which is of non-aggregate
    type `matrix*'
    create.h:115: request for member `col_dim' in `B', which is of non-aggregate
    type `matrix*'
    create.h:117: request for member `row_dim' in `A', which is of non-aggregate
    type `matrix*'
    create.h:118: request for member `col_dim' in `A', which is of non-aggregate
    type `matrix*'
    create.h:119: request for member `element' in `A', which is of non-aggregate
    type `matrix*'
    create.h:119: request for member `element' in `B', which is of non-aggregate
    type `matrix*'


    Thanks
  • horace1
    Recognized Expert Top Contributor
    • Nov 2006
    • 1510

    #2
    assuming matrix is something like
    Code:
    class matrix
    {
          public:
          int row_dim, col_dim;
          int element[100][100];
    };
    and the parameters to function equate() are matrix* you use the -> operator to access data members, e.g.
    Code:
    void equate(matrix *A, matrix *B)
    {
    int i, j;
    assert(A->ow_dim == B->col_dim && A->col_dim == B->col_dim);
    
    for(i=0; i < A->row_dim; i++)
    for(j=0; j < A->col_dim; j++)
    A->element[i][j] = B->element[i][j];
    }

    Comment

    • lqdeffx
      New Member
      • Mar 2007
      • 39

      #3
      or you can dereference them as pointers, then you would be able to use the '.' operator; but I that is a matter of preference. personally I don't mind typing an extra character each time and it lets me know at a glance that its a pointer.

      Comment

      Working...