Przypisanie nowej wartości do stałej

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?

0

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

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.

1

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

2

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;
}
0

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

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