From: sparhawk AT eunet DOT at (Gerhard Gruber) Newsgroups: comp.os.msdos.djgpp Subject: Re: Operator overloading problem Date: Wed, 26 Aug 1998 09:44:53 GMT Organization: EUnet Austria Lines: 103 Message-ID: <35e5b656.487056@news.Austria.EU.net> References: <35e30d75 DOT 267206 AT news DOT telepac DOT pt> NNTP-Posting-Host: e146.dynamic.vienna.at.eu.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii NNTP-Posting-Date: 26 Aug 1998 09:46:28 GMT To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Content-Transfer-Encoding: 8bit Precedence: bulk Destination: morgado AT mail DOT telepac DOT pt (Jorge Bruno S. S. Morgado) From: Gruber Gerhard Group: comp.os.msdos.djgpp Date: Tue, 25 Aug 1998 19:34:05 GMT: >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&); >}; remove this "friend" keyword. >bool operator==(Matriz &a, Matriz &b) and this should be bool Matriz::operator==(Matriz &a, Matriz &b) I think this should work then. >{ > 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 ? > > > -- Bye, Gerhard email: sparhawk AT eunet DOT at g DOT gruber AT sis DOT co DOT at Spelling corrections are appreciated.