delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/08/25/16:45:47

From: morgado AT mail DOT telepac DOT pt (Jorge Bruno S. S. Morgado)
Newsgroups: comp.os.msdos.djgpp
Subject: Operator overloading problem
Date: Tue, 25 Aug 1998 19:34:05 GMT
Lines: 81
Message-ID: <35e30d75.267206@news.telepac.pt>
NNTP-Posting-Host: 194.65.172.91
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Can you tell what is wrong with this code:

I've made a class called Matriz, like this:



#define	MIN_LINHAS	2
#define	MIN_COLUNAS	2

class Matriz
{
 protected:
 double *matriz_ptr;
 unsigned linhas;
 unsigned colunas;

 public:
  Matriz(unsigned i = MIN_LINHAS, unsigned j = MIN_COLUNAS):
   linhas(i), colunas(j) {matriz_ptr = new double[linhas * colunas];}
  ~Matriz() {delete[] matriz_ptr;}
  unsigned n_linhas() const {return linhas;}
  unsigned n_colunas() const {return colunas;}
  double& operator()(unsigned linha, unsigned coluna)
   {return *(matriz_ptr + (linha-1) + (coluna-1) * linhas);}
  friend bool operator==(Matriz&, Matriz&);
};

bool operator==(Matriz &a, Matriz &b)
{
 int i, j;

 if(b.n_linhas()!=a.n_linhas() || b.n_colunas()!=a.n_colunas())
  return(false);

 for(i=1; i<=a.n_linhas(); i++)
  for(j=1; j<=a.n_colunas(); j++)
   if(a(i,j) != b(i,j));
    return (false);
 return(true);
}




And in main i've put something like this:




void main()
{
 Matriz A(2, 3);
 Matriz B;

 A(1,1) = 11;
 A(1,2) = 12;
 A(1,3) = 13;
 A(2,1) = 21;
 A(2,2) = 22;
 A(2,3) = 23;

 if(A == B)
  cout << "\n\nB = A";
 if(c != y)
  cout << "\nB != A";
}


But the problem is that when I try to compile, it gives the following 
error:

Error: A undeclared (first use this function)
Error: B undeclared (first use this function)



Do you know what is wrong with this code ?




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019