如何修复主函数在传递参数时调用不正确的函数? (c++)
How to fix main function calling the incorrect function when passing parameters? (c++)
我的 CS class 有一个项目,我已经编写了一个复制构造函数并将 class 的一个对象传递给它,但主要是调用了错误的构造函数。
主要内容:
Mammal x;
cout << "Initial values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
x.setAge(10);
x.setWeight(123);
cout << "Modified values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
Mammal w(&x);
cout << "\nModified values for w: ";
cout << "Age = " << w.getAge() << " Weight = " << w.getWeight() << endl;
w.sound();
复制构造函数:
Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
}
主要调用的函数:
Mammal(bool x)
{
canSwim = x;
}
我希望输出复制这些值,但它从默认构造函数中将年龄和体重的值设置为 0。
您的复制构造函数仅复制 canSwim 属性。
您必须明确说明要复制哪些属性:
Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
this->age = x.age;
this->weight = x.weight;
...
}
正如@Jeffrey Cash 所指出的,您应该从构造函数调用中删除“&”。
当您通过引用传递时,您不会使用 &
来获取某物的地址。
尝试以下操作:
Mammal w(x);
此外,我建议使用编译标志 -Wall -Wextra
,因为它们可能会提醒您注意此问题。
我的 CS class 有一个项目,我已经编写了一个复制构造函数并将 class 的一个对象传递给它,但主要是调用了错误的构造函数。
主要内容:
Mammal x;
cout << "Initial values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
x.setAge(10);
x.setWeight(123);
cout << "Modified values for x: ";
cout << "Age = " << x.getAge() << " Weight = " << x.getWeight() << endl;
Mammal w(&x);
cout << "\nModified values for w: ";
cout << "Age = " << w.getAge() << " Weight = " << w.getWeight() << endl;
w.sound();
复制构造函数:
Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
}
主要调用的函数:
Mammal(bool x)
{
canSwim = x;
}
我希望输出复制这些值,但它从默认构造函数中将年龄和体重的值设置为 0。
您的复制构造函数仅复制 canSwim 属性。 您必须明确说明要复制哪些属性:
Mammal(Mammal &x)
{
this->canSwim = x.canSwim;
this->age = x.age;
this->weight = x.weight;
...
}
正如@Jeffrey Cash 所指出的,您应该从构造函数调用中删除“&”。
当您通过引用传递时,您不会使用 &
来获取某物的地址。
尝试以下操作:
Mammal w(x);
此外,我建议使用编译标志 -Wall -Wextra
,因为它们可能会提醒您注意此问题。