I'm learning C++. Now, I'm trying to make one sample related with overloading operators of an object. My object (called Contador) has different methods and variables which help user to count iterations.
Header file of the object:
class Contador
{
private:
    int* Valor;
    int* Salto;
public:
    Contador(int Valor_Inicio = 0, int Salto = 1);
    ~Contador();
inline int Get_Valor() const { return *Valor; }
inline int Get_Salto() const { return *Salto; }
inline void Incremento() { Set_Valor(Get_Valor() + Get_Salto()); }
inline void operator++ () { Set_Valor(Get_Valor() + Get_Salto()); }
void Set_Valor(int Valor);
void Set_Salto(int Salto);
};
Cpp file of the object:
// Librerias Propias
#include "Contador.h"
Contador::Contador(int Valor_Inicio, int Salto)
{
    Set_Valor(Valor_Inicio);
    Set_Salto(Salto);
}
Contador::~Contador()
{
    delete Contador::Valor;
    delete Contador::Salto;
}
void Contador::Set_Valor(int Valor)
{
    delete Contador::Valor;
    Contador::Valor = new int(Valor);
}
void Contador::Set_Salto(int Salto)
{
    delete Contador::Salto;
    Contador::Salto = new int(Salto);
}
The main() function of the sample has 2 different for loops. In the first one, I call Incremento() method and in the second one I call the overloaded operator.
Main function:
void main()
{
    // Genero el elemento de analisis.
    Contador* contador = new Contador();
    // Realizo el bucle con la función de incremento.
    std::cout << "Incremento()" << std::endl;
    for (contador->Set_Valor(0); contador->Get_Valor() < 3; contador->Incremento())
    {
        // Escribo algo.
        std::cout << "Iteracion actual: " << contador->Get_Valor() << std::endl;
    }
    // Realizo el bucle on el operador sobrecargado
    std::cout << "operador sobrecargado" << std::endl;
    for (contador->Set_Valor(0); contador->Get_Valor() < 3; contador++)
    {
        // Escribo algo.
        std::cout << "Iteracion actual: " << contador->Get_Valor() << std::endl;
    }
}
The problem appears when main function passes the first iteration of the second loop. It throws one exception in Get_Valor() method. 
It seems to me that it change the memory addres of the pointer Valorin some place, but I can`t find where.
Can anybody help me? Thanks.

 
     
     
    