我有一個Vector類可以返回它自己的片。這些切片將引用實際的矢量,因此切片和原點都將被修改。一個問題是以下codesnippet:當對象超出範圍/得到無效時收到通知
class VectorBase {
// Offers basic methods
}
class Vector : VectorBase {
// An actual vector
}
class VectorRef : VectorBase {
// References parts of another vector
// Constructor creates a slice of the base vector
VectorRef(VectorBase base, int start, int end);
}
void foo() {
Vector* a = new Vector();
VectorRef b(*a, 1,4);
delete a;
b.length(); // <---- Problem because a isn't valid anymore
}
我想簡單地通過當用戶調用切片對象的方法拋出異常來解決這個是這樣的。我如何確定原始對象是否超出範圍?
不要返回引用局部變量是什麼。在那裏,完成。 – CoryKramer 2014-10-04 15:16:53
*「因爲超出範圍而出現問題」*說,'b'本身怎麼樣? :)你正在返回一個對一個不存在的對象的引用。 – jrok 2014-10-04 15:17:53
哦,是的,你是對的......你們誰能想到一個'a'會得到oos但是'b'沒有的情況嗎?因爲這個問題不是關於這個特例,而是更多的關於一般的「a是無效的,如何通過b注意到?」編輯完成該問題。 – WorldSEnder 2014-10-04 15:28:48