// const protege los campos del objeto, no lo que hay al otro lado de un puntero.
#include <iostream>

class Remote {
public:
    explicit Remote(int *target) : target_(target) {}

    // Compila: no cambia target_, solo el entero al que apunta.
    void reset() const {
        *target_ = 0;
    }

private:
    int *target_;
};

int main() {
    int counter = 5;
    const Remote remote(&counter);
    remote.reset();
    std::cout << counter << "\n";
    return 0;
}
