だから私は宿題の問題に直面していますgetApple
- is const であるため、設定できません。つまり、他のプログラムでインスタンス化され解放されたリンゴで が呼び出されるlocallyAllocated = false
たびに、私のデストラクタはメモリを解放しようとし、double をスローしますgetApple
フリーエラー。私は何を間違っていますか、どうすれば修正できますか? 注: 関数、そのパラメーター、および署名は、割り当てのとおりにする必要があります。本当にありがとう!
class poop
{
Apple localApple;
bool locallyAllocated;
void* pointer;
public:
poop(const Apple &apple)
{
//Set our local apple to the apple in the provided address
localApple = apple;
locallyAllocated = false;
}
poop(string descr)
{
localApple.description = descr;
pointer = maloc(sizeof(localApple);
localApple.pointer = pointer
locallyAllocated = true;
}
~poop()
{
if(locallyAllocated)
{
//This throws a double free error if "getApple" is ever called
free(pointer);
}
}
void getApple(Apple* apple) const
{
if(apple)
{
//Copies our local apple into the address of the given apple
//Because this function is "const", i can't do anything like set "locallyAllocated" to false
*apple = localApple
}
}
}