我有1個父類(「Area」)和一些子類(「circle」,「polygon」等)。 其中一個虛擬繼承函數的行爲非常奇怪 - 它的輸入參數在運行時消失(在調試模式下可見)。這讓一些內存奇怪的錯誤.. 你有什麼想法(假設段班運作良好)參數在繼承函數中消失
class Point {
int x, y;
public:
Point(){};
Point(int xP, int yP):x(xP), y(yP){}
};
class Area {
public:
virtual ~Area() {
}
virtual bool contains(const Point& p1) const=0;
};
class Circle: public Area {
double radius;
Point center;
public:
~Circle() {}
Circle(double radiusP, Point centerP) :
radius(radiusP), center(centerP) {}
bool contains(const Point& p1) const;
};
和函數的定義(包含):
bool Circle::contains(const Point& p1) const {
return Segment(center, p1).getLength() < radius;
}
你能不能給我們的錯誤嗎? – CatShoes
1.需要更多關於錯誤的細節2.發佈調用「contains」方法的代碼 – 2012-06-21 20:14:40
當你說消失時,你的意思是它的值在你的調試器中是不可見的,或者你得到一個顯式的內存錯誤通知? – mathematician1975