将用户输入作为参数传递给构造函数

时间:2015-09-22 17:28:07

标签: c++

我最近遇到了一个问题,我无法将存储在变量中的用户馈送值作为参数传递给构造函数。我的代码如下所示:

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);

2 个答案:

答案 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,在你的问题中可能是一个拼写错误。