【发布时间】:2021-08-30 09:12:08
【问题描述】:
我有一个简单的程序,其中有两个类,分别是 Hat 和 Person。每个Person 都有一个string name、一个int idNum 和一个帽子对象。每顶帽子只有一个字符串hatType 和一个字符hatSize。在主要方法中,我想简单地声明 2 个人并使用显示方法来显示信息。这是我当前的代码,请放轻松我还是 C++ 中 OOP 的新手。
人员类
class Person
{
private:
string name;
unsigned int idNum;
Hat myHat;
public:
Person(string, unsigned int, Hat);
void display();
};
Person::Person(string personName, unsigned int personID)
{
name = personName;
idNum = personID;
myHat = hat;
}
void Person::display()
{
cout << "Given name : " << name << endl;
cout << "Id. number : " << idNum << endl;
hat.display();
}
帽子类
class Hat
{
private:
string hatType;
char hatSize; // S, M, L
public:
Hat(string,char);
void display();
};
Hat::Hat(string _type, char _size){
hatType = _type;
hatSize = _size;
}
void Hat::display()
{
cout << "Hat type : " << hatType << endl;
cout << "Hat size : " << hatSize << endl;
}
主要
int main()
{
Person personA("Alice",12321, Hat("Trilbee",'M'));
Person personB("Bob",2324, Hat("Ferret",'S'));
personA.display();
personB.display();
return 0;
}
【问题讨论】:
-
在 Person 构造函数中缺少帽子:
Person::Person(string personName, unsigned int personID) -
将帽子添加到构造函数:Person::Person(string personName, unsigned int personID, const Hat& hat)
-
当我添加 Hat hat 时出现此错误:没有匹配函数调用 'Hat::Hat()' @Cid
-
另一件事:对于这些简单的初始化,最好使用成员初始化列表en.cppreference.com/w/cpp/language/constructor
标签: c++ oop constructor