Vollständige Version anzeigen : c++ Einer Funktion ein Wert zuweisen


Mr.y
14.09.2014, 12:55

Hallo,

Ich habe eine Matrix, worin ich die Daten halte mit dem double**-Zeiger.
Der zeigt auf die Rheihe und dann auf die Spalte.
Nun möchte ich folgende Zeile umsetzen:

Matrix;on(4,5) = 20;

Ich vermute mal, man macht das so:
1. Die Adresse vom (4,5) als einen doppelten Zeiger zurück geben.
2. Den = Operator überladen und an diese Adresse die 20 schreiben.

Nur kann ich das im Code nicht so umsetzen:

int** Matrix::on(int rheihe, int spalte){
return **this->Werte[rheihe][spalte] //geht nicht.....
}

void Operantor=(double wert){
this->Werte[ ][ ] = wert;
}


Danke für jeden Tipp.

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Murdoc
14.09.2014, 15:41

Wenn du das umbedingt so haben willst ^^

Möglich isses auf alle Fälle:

mit nem wrapper

#include <iostream>

class Matrix
{
public:
class Cell;

private:
const size_t rows;
const size_t cols;
Cell* cells;

public:
const static int out_of_bounds = -1;

Matrix(const size_t, const size_t);
~Matrix(void);

Cell& on(const size_t, const size_t);

class Cell
{
double value;

public:
Cell(void);

void operator= (const double v);

double get_value(void) const;
double set_value(const double);

friend std::ostream& operator<< (std::ostream&, const Matrix::Cell&);
};
};

// ---------------------------------------

Matrix::Matrix(const size_t _rows,
const size_t _cols)
: rows(_rows), cols(_cols)
{
cells = new Cell[rows * cols];
}

Matrix::~Matrix(void)
{
delete[] cells;
}

Matrix::Cell& Matrix::on(const size_t row,
const size_t col)
{
if (row >= rows || col >= cols)
throw Matrix::out_of_bounds;

return cells[row * cols + col];
}

// ---------------------------------------

Matrix::Cell::Cell(void)
{
value = 0.;
}

void Matrix::Cell::operator= (const double _value)
{
value = _value;
}

double Matrix::Cell::get_value(void) const
{
return value;
}

double Matrix::Cell::set_value(const double _value)
{
double old_value = value;
value = _value;
return old_value;
}

std::ostream& operator<< (std::ostream& os, const Matrix::Cell& c)
{
os << c;get_value();
return os;
}

// ---------------------------------------

int main(void)
{
Matrix m { 5, 5 };

for (unsigned r = 0; r < 5; ++r)
for (unsigned c = 0; c < 5; ++c)
m;on(r, c) = r + c;

for (unsigned r = 0; r < 5; ++r)
for (unsigned c = 0; c < 5; ++c)
std::cout << "[" << r << "] [" << c << "] = " << m;on(r, c) << std::endl;

return 0;
}



mit nem einfachen pointer
#include <iostream>

class Matrix
{
const size_t rows;
const size_t cols;
double* cells;

public:
const static int out_of_bounds = -1;

Matrix(const size_t, const size_t);
~Matrix(void);

double* on(const size_t, const size_t);
};

// ---------------------------------------

Matrix::Matrix(const size_t _rows,
const size_t _cols)
: rows(_rows), cols(_cols)
{
cells = new double[rows * cols]();
}

Matrix::~Matrix(void)
{
delete[] cells;
}

double* Matrix::on(const size_t row,
const size_t col)
{
if (row >= rows || col >= cols)
throw Matrix::out_of_bounds;

return &(cells[row * cols + col]);
}

// ---------------------------------------

int main(void)
{
Matrix m { 5, 5 };

for (unsigned r = 0; r < 5; ++r)
for (unsigned c = 0; c < 5; ++c)
*m;on(r, c) = r + c;

for (unsigned r = 0; r < 5; ++r)
for (unsigned c = 0; c < 5; ++c)
std::cout << "[" << r << "] [" << c << "] = " << *m;on(r, c) << std::endl;

return 0;
}


Hab der Einfachheit halber auf ein multidimensionales array oder std::vector verzichtet.


Ähnliche Themen zu c++ Einer Funktion ein Wert zuweisen
  • [Code] globale Funktion innerhalb einer Funktion (Python)
    So ich hab nun meine Ableitung programmiert (funktioniert soweit ganz gut). Doch nun möchte ich eine Globale Funktion innerhalb einer Funktion erstellen. Der Wichtige Code sieht so aus: global polystring func_text = raw_input('f(x) = ') polystring = str(func_text) eval(compile('def f(x): retur [...]

  • Start->Ausschalten andere Funktion zuweisen
    Hi, -------------------------- Mein Anliegen heißt kurzgefasst: Ist es bei XP möglich, wie bei Vista, den PC in den Ruhezustand zu versetzen, wenn man den "Ausschalt"-Button drückt? -------------------------- Ist es möglich dem Ausschaltbutton unter XP eine andere Funktion zuzuweisen? Für mich [...]

  • G11 Tasten zuweisen (ohne Funktion)
    Hallo Ich habe über meine G11 Wasser verschüttet und einen Tag später ging die gar nicht mehr. Jetzt habe ich die komplett auseinander gebaut und abgewischt und naja, die Buchstaben und die Sonderzeichen gehen alle wieder, aber einige Tasten sicnd ohne Funktion, wie die Backspace Taste, die ich [...]

  • [PHP] Buttons einen Wert zuweisen?
    Hallo, nun hab ich eine Frage bezüglich der Buttons! Ist es denn möglich verschiedene Buttons einen Wert zuzuweisen? D;h. ich habe 2 Dokumente: - shop;php - bestellung;php Im Dokument "shop;php" sind 3 Buttons, wenn ich nun auf einen der Button klicke komme ich auf das Dokument "bestellung [...]



raid-rush.ws | Imprint & Contact pr