我需要創建一個類,每次創建一個對象時,還創建一個修改後的副本,並且能夠執行相同的方法以回饋原始並修改。 我創造了這個例子,但它不工作:C++在其自己的類中創建一個對象的修改副本
#include <iostream>
class Box
{
public:
double l, w, h;
double vol, surf;
double getVol(){return l*w*h;};
double getSurf(){return (l*w + l*h + w*h) *2;};
double getVolDiff()
{
boxTemp->l = l+1;
boxTemp->w = w;
boxTemp->h = h;
return getVol() - boxTemp->getVol();
};
private:
Box* boxTemp;
};
int main(int argc, const char * argv[]) {
Box box;
box.l = 1;
box.w = 2;
box.h = 3;
std::cout << "Vol: " << box.getVol() << std::endl;
std::cout << "Surf: " << box.getSurf() << std::endl;
std::cout << "Vol Diff: " << box.getVolDiff() << std::endl;
return 0;
}
這個例子是給我的方法getVolDiff
內的錯誤。你能幫我解決這個問題嗎?
編輯 對不起,如果我沒有指定錯誤,但它是一個運行時錯誤,我沒有從編譯器得到任何信息。
你永遠不會初始化'boxTemp'。你應該寫一個構造函數來初始化所有的類字段。 – VTT
當你說「錯誤」時,你的意思是什麼?構建錯誤?運行時崩潰?意外的結果?請花一些時間[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –
一旦你用'Box'的新實例初始化'boxTemp',確保你不會以遞歸調用結束。 – teivaz