我做了一個大數字類。在我的程序中,菜單向用戶詢問他們想要如何處理該類中爲它們創建的三個對象中的任何一個。他們的選擇之一是斐波那契,在這一點上,他們也必須輸入一個數字並選擇其中一個對象。將創建的對象分配給選定的對象
輸入數字是Fibonacci序列中的數字,它被放入Large Number類中。到目前爲止,我已經完成了所有工作,並計算出了第9999個斐波那契數,但這裏是我的問題:
大數字類是創建大數字對象的斐波那契方法。我現在想讓所選對象成爲創建的對象。
以下是我的斐波納契方法。我添加了一些評論來解釋發生了什麼。
void fibonacci(int n){
Large *One = new Large(), *Two = new Large();
One->makeOne(); // initializes the object
Two->makeOne(); // same here
Two->first->setnum(1); // sets "Large Number" Two to 1 (One is already 0)
int current = 0; // counter
while (current != n){
Large *Temp = new Large();
Temp->add(One,Two); // sums One and Two into a temporary Large Number
One = Two;
Two = Temp;
current++;
}
this = One; // <-- here is my question
}
您可能會相信在while循環結束後會創建正確的數字。但是現在我希望所選對象成爲創建的數字(「One」)。
的方法被稱爲在類似如下的事:
Large A = Large();
A.fibonacci(n);
我怎麼會讓A
(這將是this
)等於One
。
this = One;
不起作用。 error: lvalue required as left operand of assignment
問:將創建的對象分配給所選對象的正確方法是什麼?
你不能重新分配這個指針。你需要構建不同的代碼。將對象存儲在一個變量中,而不是試圖改變「this」 – Nabren
* * this = * One'?它應該調用複製賦值操作符。 – 0x499602D2