Gettery i settery dla tablicy dynamicznej C++

0

Witam. Jeśli definicja tablicy dynamicznej dwuwymiarowej (2 wskaźniki) jest ustawiona jako prywatna, dobrze robię odwołania do tego obiektu? Ustawiłem to w następujący sposób:

 void perceptron::setW (int j, int k, double value) {
	W[j][k] = value;
}

double perceptron::getW (int j, int k)
{
	return W[j][k];
}
0

a co jezeli podam j i k ktore nie istnieje? Np 10000000ul dwukrotnie. Jak sadzisz co sie stanie z Twoim kodem?

1

zależy na czym ci zależy, jeżeli na bazpieczeństwie kodu to jak wyżej, trzeba walidować wejście. Jeżeli na wydajności to tych metod nie powinno być tylko kod powinien być inline.

0
double perceptron::getW (int j, int k)
{
if (W[j][k] == true)
    return W[j][k];
else
    cout << "Wybrano wartość spoza tablicy";
}

Więc może w takim razie stworzyć to w taki sposób? :) Swoją drogą zastanawiam się, czy enkapsulacja w takim wypadku jest w ogóle czymś z góry obowiązkowym. Wiadomo, że kod o wiele lepiej pisałoby mi się, gdyby dostęp do zmiennych był publiczny.

0
#include <vector>

template<typename T>
struct matrix{
    matrix(size_t width, size_t height):
        _width(width),
        _height(height),
        _data(width*height){}

    auto width() const{ return _width; }

    auto height() const{ return _height; }

    auto *operator[](size_t idx){ return _data.data() + (idx * _height); }
    const auto *operator[](size_t idx) const{ return _data.data() + (idx * _height); }

    auto begin(){ return ::begin(_data); }
    auto begin() const{ return ::begin(_data); }

    auto end(){ return ::end(_data); }
    auto end() const{ return ::end(_data); }
private:
    size_t _width, _height;
    std::vector<T> _data;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1