c++ - 有什么方法可以检测指针是否指向数组?

标签 c++ arrays pointers

在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/

相关文章:

c++ - 链接器错误 LNK2001

c++ - C4244 4 级关于复合加法赋值的警告,但不涉及求和和赋值

PHP |通过重新排序从数组中删除元素?

c++ - 在 C++ 中将数组设置为已初始化的传入数组

c++ - setContextProperty() 在这种情况下如何失败?

php - 无法理解 C++ STL 源中的 1 行代码 : Lower_Bound/Upper_Bound

arrays - 在 Swift 中将值附加到多维数组

c++ - 如何用全局变量声明全局数组的长度?

java - 在 Java 中查找 ArrayList 中最常见/最频繁的元素

c++ - 空指针等价于 int