现在我有了SmartPointers,我决定尝试使用DumbPointers,它完成了在析构函数中调用“删除”的艰巨工作。为了继续使用DumbPointer在SmartPointer中存储阵列的测试,我回顾了先前的错误并尝试了以下操作:
DumbPointer<char> dumbPointer = "Hello World\0";
由于未定义的原因“也许不是指针还是正确的指针?”,它导致程序挂起。自然,我想知道为什么,着眼于解决上述问题。现在,我将在下面提供非常复杂的DumbPointer代码(也许我应该去睡觉):(让我再次向您保证:调用了析构函数)
#pragma once
#include "stdafx.h"
template <typename T> class DumbPointer
{
private:
T* myPtr;
public:
T* Value() { return myPtr; }
DumbPointer(const DumbPointer<T>& a)
{ throw new "No assignments between DumbPointer."; }
DumbPointer(T* ptr) { myPtr = ptr; }
DumbPointer(T value) { myPtr = &value; }
~DumbPointer() { delete myPtr; }
operator T*() { return myPtr; }
T* operator ->() { return myPtr; }
};
最佳答案
您只能使用delete
分配的new
指针。您将字符串常量传递给具有静态分配的DumbPointer。