有没有办法检测指针是否指向数组?

Sad*_*ido 4 c++ arrays pointers

有没有办法检测,指针是否指向C++中的数组?我的问题是我想实现一个类,它成为数组的所有者.我的类用指针初始化,我想知道,指针是否真的是一个数组指针.这是简化的代码:

class ArrayOwner {
public:
   explicit ArrayOwner( int* initialArray ) : _ptrToArray(initialArray) {}
   virtual ~ArrayOwner() { delete [] _ptrToArray; }
private:
   int* _ptrToArray;
}
Run Code Online (Sandbox Code Playgroud)
  • 这种用法没问题:ArrayOwner foo(new int [10]);
  • 但是这种用法会导致未定义的行为: ArrayOwner foo(new int());

我想在构造函数中添加assert,"initialArray"指针实际上是一个数组指针.我不能改变构造函数的契约,使用向量等有没有办法在C++中编写这个断言?

Bin*_*ier 6

不,不幸的是没有.C++ RTTI不扩展到基本类型.


Dra*_*sha 5

没有可移植的方法来做到这一点.