使用具有用户输入

时间:2016-02-29 07:29:08

标签: c++

我想从类中的不同类创建一个对象,但是我的构造函数接受用户输入来初始化对象。

这是我的头文件:

class assignment {
private:
    int assignment1;
    int assignment2;
    int assignment3;
public:
    assignment(int a1, int a2, int a3);
};

class marks {
private:
    assignment Assg;   //object in class
public:
    marks();
}; 

我的功能定义:

assignment::assignment(int a1, int a2, int a3) :assignment1(a1), assignment2(a2), assignment3(a3) {
    cout << "Initializer list Assignment constructor invoked" << endl;
}

我不知道如何为marks创建构造函数,因此我可以初始化assignment Assg。此外,在哪里可以为作业1,2和3进行用户输入?

3 个答案:

答案 0 :(得分:1)

您可以使用成员初始值设定项列表初始化Assg

// mean that a1 = 1, a2 = 2, a3 = 3
marks::marks(): Assg(1, 2, 3) {}

答案 1 :(得分:0)

因为你说要接受用户输入......这是唯一的方法:

class marks {
private:
    assignment Assg;   //object in class
public:    
    marks(int a1, int a2, int a3) : Assg(a1, a2, a3)
    {

    }   
};

或者你可以在assignment类上添加一个带0个参数的构造函数,然后添加一个函数&#34; create&#34;或者&#34;初始化&#34;所以你可以稍后初始化对象(否则你被迫使用member initializer list

初始化它

class assignment {
private:
    int assignment1;
    int assignment2;
    int assignment3;
public:
    assignment(int a1, int a2, int a3) : { Create(a1, a2, a3); }
    assignment() { assignment1 = assignment2 = assignment3 = 0; }
    void Create(int a1, int a2, int a3);
};

class marks {
private:
    assignment Assg;   //object in class
public:    
    marks() 
    {
       Assg.Create(1, 2, 3);
    }   
};

答案 2 :(得分:0)

您需要为带有三个整数值的标记编写构造函数,并将它们传递给赋值构造函数。

marks::marks(int a1, int a2, int a3) : Assg(a1, a2, a3) {}

或者您可以编写setter来设置之后的赋值(但这会破坏封装)

class assignment {
private:
    int assignment1;
    int assignment2;
    int assignment3;
public:
    assignment(int a1, int a2, int a3);

    void setAssignments(int a1, int a2, int a3) { assignment1 = a1, ... } 
};

还有标记

class marks {
private:
    assignment Assg;   //object in class
public:
    marks();
    void setAssignments(int a1, int a2, int a3) { Assg.setAssignments(a1, a2, a3); } 
};