我做了一个大数字类。在我的程序中,菜单向用户询问他们想要如何处理该类中为它们创建的三个对象中的任何一个。他们的选择之一是斐波那契,在这一点上,他们也必须输入一个数字并选择其中一个对象。将创建的对象分配给选定的对象
输入数字是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