在C++中有没有办法检测指针是否指向数组?我的问题是我想实现一个类,它成为数组的所有者。我的类是用指针初始化的,我想知道指针是否真的是一个数组指针。这是简化的代码:
class ArrayOwner {
public:
explicit ArrayOwner( int* initialArray ) : _ptrToArray(initialArray) {}
virtual ~ArrayOwner() { delete [] _ptrToArray; }
private:
int* _ptrToArray;
}
- 这个用法就可以了:ArrayOwner foo( new int[10] );
- 但是这个用法 导致未定义的行为: ArrayOwner foo( new int() );
我想在构造函数中添加断言,“initialArray”指针实际上是一个数组指针。我无法更改构造函数的契约(Contract),使用 vector 等。有什么办法可以用 C++ 编写这个断言吗?
最佳答案
不,不幸的是不是。 C++ RTTI不扩展到原始类型。
关于c++ - 有什么方法可以检测指针是否指向数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025941/