Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Överlagring operator(), inkl fungerande Lvalue

Postades av 2004-12-10 14:14:38 - Tom Omvik, i forum c++, Tråden har 1 Kommentarer och lästs av 911 personer

Jag skulle vilja kunna överlagra operator() så att man ska kunna göra det här i main() :

int main()
{
int row=2;
int col=2;

//M initieras till en dynamisk allokerad matris med 2 rader & 2 kollumner.
Matrix M(row, col);

//detta fungerar: int svar=M(0, 1);
//men jag skulle även vilja att denna sats fungerar:
M(0, 1)=3;
//Vet någon hur man ska koda så att operator() - fungerar i båda fallen?

return 0;
}

.H filern ser ut så här:
#ifndef _MATRIX_H_
#define _MATRIX_H_

typedef int MatrixEntry;
typedef enum {ZERO, IDENTITY, RANDOM} InitTyp;

class Matrix
{
private:
int size_col;
int size_row;
MatrixEntry **matris;
public:
Matrix();
Matrix(const int row, const int collumn, const InitTyp elm);
........
MatrixEntry operator()(const int row, const int collumn);
};
#endif

I .CPP:
MatrixEntry Matrix::operator()(const int row, const int collumn)
{
return matris[row][collumn];
}

Matrix::Matrix(const int row, const int collumn, const InitTyp elm)
{
size_row=row;
size_col=collumn;
matris=new MatrixEntry*[size_row];
for(int r=0; r<size_row; r++)
matris[r]=new MatrixEntry[size_col];

if(elm==ZERO)
{
for(int y=0; y<size_row; y++)
for(int x=0; x<size_col; x++)
matris[y][x]=0;
}
else if(elm==IDENTITY)
{
MatrixEntry value;
for(int y=0; y<size_row; y++)
for(int x=0; x<size_col; x++)
{
cout<<"Element Y[" <<y <<"]-X[" <<x <<"] får värdet: _\b";
cin>>value;
matris[y][x]=value;
}
}
else if(elm==RANDOM)
{
srand(time(NULL)); //initiering av slumpgeneratorn
for(int y=0; y<size_row; y++)
for(int x=0; x<size_col; x++)
matris[y][x]=rand()%21-10; //slumpa mellan -10 till +10
}
else
{
cout<<"Varning!\n Endast dessa ental finns som alternativ:\n"
<<"0=Alla element får talet noll, 1=Ange själv elementens värden\n"
<<" och 2=Elemntens värden slumpas ut.\n";
delete [] matris;
}
}


Svara

Sv: Överlagring operator(), inkl fungerande Lvalue

Postades av 2004-12-10 17:14:04 - Jesper Brännström

För att det ska fungera med M(0, 1)=3 så måste operator-funktionen returnera en referens till MatrixEntry. Men se till att du skapar en const-deklarerad operator() där du inte returnerar en referens (mao som du gör i ditt exempel).

MatrixEntry& operator()(const int row, const int collumn);
MatrixEntry operator()(const int row, const int collumn) const;


Du ska ha exakt samma kod i båda funktionerna.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 512
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies