有沒有什麼辦法來檢測,指針是否指向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