Przypisanie nowej wartości do stałej

Odpowiedz Nowy wątek
2018-01-14 18:59
0

Cześć, mam pewien problem w zadaniu i nie mogę sobie z nim poradzić.

class Klasa
{
    const int a;
    ...
public:
    ...
    int operator+=(int b);
};

Chodzi o metodę operator+=, która ma za zadanie zwiększyć wartość klasy a o podany parametr. Normalnie nie można zmienić wartości zmiennej będącej stałej i wszelkie nowe przypisania jak wiadomo kończą się błędem podczas kompilacji i tutaj mam pytanie, jak sobie z tym poradzić? Ze względu na wytyczne nie mogę zlikwidować 'const' przy deklaracji pola. Próbowałem utworzyć nową zmienną i wartość jej przypisać do stałej, ale wychodzi na to samo o czym pisałem wcześniej. Jakieś pomysły?

Pozostało 580 znaków

2018-01-14 19:24
0

Może chodziło o przedrostek static a nie const?

Pozostało 580 znaków

2018-01-14 19:24
1

mógłbyś dać
const int* x;
i sobie operować na wskaźnikach, ale dodawanie do czegoś co ma być z natury stałe jakiś wartości? To kompletny bez sens i bezsensowne zadanie.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
edytowany 2x, ostatnio: revcorey, 2018-01-14 19:25

Pozostało 580 znaków

2018-01-14 19:26
1

Skoro jest taki design, że to pole ma być stałe, to po co pisać funkcję je zmieniającą, bez sensu.


edytowany 1x, ostatnio: lion137, 2018-01-14 19:27

Pozostało 580 znaków

2018-01-14 19:39

To zadanie brzmi bezsensownie. Niemniej jednak oczywiście się da.

#include <iostream>

class Klasa
{
    const int a;
public:
    Klasa(): a{101} {}
    int operator+=(int b) {
        int * value = const_cast<int*>(&a);
        *value += b;
        return a;
    }
    int valueOf() const {
        return a;
    }
};

int main() {
    Klasa k;
    k += 2;
    std::cout << k.valueOf() << std::endl;
}

Każdy problem w informatyce można rozwiązać, dodając kolejny poziom pośredniości,z wyjątkiem problemu zbyt dużej liczby warstw pośredniości — David J. Wheeler
no tak, zmienna a jest const ale wskaźnik do niej nie - czaffik 2018-01-14 20:03

Pozostało 580 znaków

2018-01-14 22:23
0

Dziękuje za odpowiedzi, wątek można zamknąć :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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