I'm confused as to what I'm doing wrong? While debugging, this shows 0xcdcdcdcd {theDouble=??? }so i know my variable isnt getting stored in my mutator. How would i go about fixing this issue? Am I supposed initialize this somewhere? I am using visual studio by the way.
Thank you for the help.
int main()
{
int i = 0;
const int MAX = 4;
CLASS **object = new CLASS*[MAX];
string name = "todd";
string aString = "words";
double aDouble = 10.0;
object[i]->setDouble(aDouble);
return 0;
}
//.cpp
CLASS::Class()
{
theDouble = new double;
*theDouble = NULL;
}
CLASS::Class(double aDouble)
{
*theDouble = aDouble;
}
void CLASS::setDouble(double p)
{
*theDouble = p;
double Class::getDouble()
{return (*theDouble);}
//.h
class CLASS
{
protected:
double *theDouble;
public:
Insurance();
Insurance(double premium);
//~Insurance();
void setDouble(double p);
double getDouble();
string toString();
};`
You use
CLASS,ClassandInsurancein mix where you should use one name so your posted code can not compile. I replace those withIronMan.What you see as
0xCDCDCDCDis notthispointer value but value of the pointer membertheDouble. The issue comes from in constructor:That constructor dereferences uninitialised member variable
theDoubleand since debuggers tend to fill uninitialized memory with some bytes like0xCDyou will have that as value of the pointer. Therefore you get a crash for accessing memory at such address.One way out of it is to allocate memory for
theDoubleBetter would be likely to avoid using pointers there at all but just have direct double data member: