有没有什么办法来检测,指针是否指向C++中的数组?我的问题是我想实现一个类,它成为数组的所有者。我的类是用指针初始化的,我想知道,指针是否真的是一个数组指针。下面是简化的代码:任何方式来检测指针是否指向数组?
class ArrayOwner {
public:
explicit ArrayOwner(int* initialArray) : _ptrToArray(initialArray) {}
virtual ~ArrayOwner() { delete [] _ptrToArray; }
private:
int* _ptrToArray;
}
- 这种用法会确定:ArrayOwner FOO(新INT [10]);
- 但是这种用法 导致未定义的行为: ArrayOwner foo(new int());
我想在构造函数中添加assert,即“initialArray”指针确实是一个数组指针。我不能改变构造函数的合约,使用vector e.t.c.有什么方法可以在C++中编写这个断言?
您应该考虑是否可以使用类似Boost Array(http://www.boost.org/doc/libs/1_39_0/doc/html/array.html)的内容。 – 2009-06-22 07:55:06
没有明智的方式去做你所要求的约束条件。为什么你不能改变构造函数或使用std :: vector? – 2009-06-22 08:01:27