这可能是不可能的,但我想我会问...
有没有人可以想到在不修改变量本身的类的情况下跟踪自动变量是否已被删除?例如,考虑以下代码:
const char* pStringBuffer;
{
std::string sString( "foo" );
pStringBuffer = sString.c_str();
}
显然,在块之后,pStringBuffer 是一个悬空指针,它可能有效也可能无效。我想要一种方法来拥有一个包含 pStringBuffer 的包装类(带有一个用于 const char* 的强制转换运算符),但断言它引用的变量仍然有效。通过更改引用变量的类型,我当然可以做到(例如,提升 shared_ptr/weak_ptr),但我希望能够在不对引用类型施加限制的情况下做到这一点。
一些想法:
- 我可能需要更改赋值语法以包含引用的变量(这很好)
- 我也许可以查看堆栈指针来检测我的包装类是否比引用的类“晚”分配,但这似乎很老套且不标准(C++ 没有定义堆栈行为)。不过,它可以工作。
想法/出色的解决方案?