我最近遇到了一个问题,我无法将存储在变量中的用户馈送值作为参数传递给构造函数。我的代码如下所示:
class Complex_no{
int real;
int imaginary;
Complex_no *ptr;
float mag;
public:
Complex_no(int a, int b){
real=a;
imaginary=b;
}
Complex_no(){
real=0;
imaginary=0;
}
现在主要的是我有一个像这样的代码:
Complex_no c;
c.Complex_no (a,c);
哪里是& c是用于存储用户输入的变量。问题是编译器显示错误说明
invalid use of ‘Complex_no::Complex_no’ c.Complex_no(r,i);
答案 0 :(得分:3)
Complex_no c;
默认构建c
。然后你尝试调用Complex_no
的2参数构造函数,这是非法的,因为对象只经过一个构造和一个破坏。您只需要摆脱Complex_no c;
,只需使用Complex_no c(a, c);
来构建c
。
您还可以使用新的自动命名约定并拥有
auto c = Complex_no(a, c);
答案 1 :(得分:0)
错误消息为您提供了调用构造函数的方式不正确的线索。在定义变量或使用' new'时调用构造函数。关键词。函数作用域中的声明是一个定义声明,因此构造函数被调用。由于您的示例在定义时没有参数,因此将调用默认(无参数)构造函数。您应该使用以下内容。
Complex_no c(a,b);
顺便说一句,你也试图通过' c'作为一个int,在你的问题中可能是一个拼写错误。