我想从类中的不同类创建一个对象,但是我的构造函数接受用户输入来初始化对象。
这是我的头文件:
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进行用户输入?
答案 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); }
};