I am trying to get a grasp on pointers and their awesomeness as well as a better C++ understanding. I don’t know why this wont compile. Please tell me what is wrong? I’m trying to initialize the pointer when an instance of the class is created. If I try with a normal int it works fine but when I tried to set it up with a pointer i get this in the console
Running…
Constructor called
Program received signal: “EXC_BAD_ACCESS”.
sharedlibrary apply-load-rules all
Any assistance is appreciated greatly.
Here is the code
#include <iostream>
using namespace std;
class Agents
{
public:
Agents();
~Agents();
int getTenure();
void setTenure(int tenure);
private:
int * itsTenure;
};
Agents::Agents()
{
cout << "Constructor called \n";
*itsTenure = 0;
}
Agents::~Agents()
{
cout << "Destructor called \n";
}
int Agents::getTenure()
{
return *itsTenure;
}
void Agents::setTenure(int tenure)
{
*itsTenure = tenure;
}
int main()
{
Agents wilson;
cout << "This employees been here " << wilson.getTenure() << " years.\n";
wilson.setTenure(5);
cout << "My mistake they have been here " << wilson.getTenure() <<
" years. Yep the class worked with pointers.\n";
return 0;
}
You don’t ever create the int that the pointer points to, so the pointer is pointer to an area of memory that doesn’t exist (or is used for something else).
You can use
newto get a block of memory from the heap, new returns the address of the memory location.So now
itsTenureholds the memory location you can dereference it to set its value.The changed constructor is as follows:
But you must also remember to delete it using
delete