• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeciążanie operatorów w klasie

VPS Starter Arubacloud
0 głosów
87 wizyt
pytanie zadane 23 września w C i C++ przez HUBSON2912 Obywatel (1,460 p.)

Witam,

zacząłem się bawić w klasy w C++. W ramach treningu napisałem swój wektor. Chciałem przeciążyć operator[] w taki sposób, żebym mógł pisać np.

vec[i]=vec[i-1]+3

Dotychczas zwracałem wartość tablicy w indeksie i, ale w takim wypadku nie działa przypisanie do indeksu. Nie wiem jak zrobić by raz vec[i] dawało element jaki przechowuje wektor, a raz wskaźnik na element by można było przypisać wartość.

W skrócie, mój kod wygląda tak:

template <typename Typ> class Wektor
{
    Typ *content;  //zawartosc
    int capacity;  //maksymalna pojemnosc
    int current;  //indeks ostatniej komorki+1

public:
    Wektor();
    ~Wektor();
    Typ get(int index);  //zwraca content[index]
    void push_back(int val);
    
    Wektor& operator=(Wektor& other);  //i to dziala jak powinno

    Typ operator[](int i)
    {
        if(i>=size())  //jesli jest ponad zakresem to blad
            exit(0);
        return get(i);  //zwroc wartosc
    }
}

 Z góry dzięki za pomoc.

komentarz 23 września przez Oscar Nałogowiec (29,340 p.)
O ile dobrze pamiętam raz musi być zwykła referencja (l-value) zwracana a w drugim przypadku const-referencja (i operator być const). Może oczywiście być zaimplementowany tylko pierwszy przypadek, gdy "obsługuje" oba kierunki.

1 odpowiedź

+2 głosów
odpowiedź 23 września przez WojAbuk Obywatel (1,780 p.)
wybrane 23 września przez HUBSON2912
 
Najlepsza
Czy na pewno chcesz go przeciążyć? Wydaje mi się że tu raczej chcesz zwrócić referencje na element zawsze. https://en.cppreference.com/w/cpp/container/vector/operator_at
komentarz 23 września przez adrian17 Ekspert (349,920 p.)
Przeciążanie jest poprawne (nie może „nie chcieć” go przeciążyć jeśli chce móc używać []), ale masz rację że powinien zwracać referencję.

Podobne pytania

0 głosów
1 odpowiedź 320 wizyt
+1 głos
0 odpowiedzi 468 wizyt
0 głosów
1 odpowiedź 541 wizyt

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...