如何在 C++ 中使用具有另一个类对象的构造函数?

达蒙·奥尼尔

我有一个简单的程序,其中有两个类是HatPerson每个Person都有一个string name、 aint idNum和一个 hat 对象。每个帽子只有一个字符串hatType和一个字符hatSize在 main 方法中,我想简单地声明 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;
}
杰森利亚姆

以下是完整的更正(工作)版本。我添加了一些评论以显示我所做的更改。

#include <iostream>
#include <string>
using namespace std;
class Hat
{
  private:
    string hatType;
    char hatSize; // S, M, L

  public:
    Hat(string,char);
    //Added this default constructor since it won't be synthesized automatically
    Hat()
    {
        std::cout<<"Default constructor"<<std::endl;
    }
    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;
}
class Person
{
  private:
    string name;
    unsigned int idNum;
    Hat myHat;

  public:
    Person(string, unsigned int, Hat);
    void display();
};

//added the 3rd parameter of type Hat
Person::Person(string personName, unsigned int personID, Hat hat)
{
    name = personName;
    idNum = personID;
    myHat = hat;
}

void Person::display()
{
        cout << "Given name : " << name << endl;
        cout << "Id. number : " << idNum << endl;
        myHat.display();//changed hat.display() to myHat.display();
}

int main()
{
    Person personA("Alice",12321, Hat("Trilbee",'M'));

    Person personB("Bob",2324, Hat("Ferret",'S'));

    personA.display();
    personB.display();

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++-如何在另一个类中使用私有构造函数实例化对象

C ++如何从具有一个参数的派生类构造函数调用具有两个参数的超类构造函数?

如何在 C# 中使用来自另一个类的初始化实例对象?

如何在C ++中的另一个模板函数中使用属于模板化类的嵌套类型?

C#如何在一个函数中创建类的实例,然后在另一个函数中使用相同的实例

当可以在另一个对象中更改一个对象时,如何在C ++中使用析构函数

C#:如何在另一个类中使用可索引属性?

如何在 C# 中使用另一个类更改变量

如何在C中的另一个函数中使用局部变量的值

从C ++ 17中的另一个构造函数调用具有不同参数类型的构造函数

如何独立于 C++ 中声明的位置在另一个类函数中使用类?

C ++:如何将一个对象传递给另一个对象构造函数?

如何在另一个类构造函数中使用一个类的成员

C#-如何使用具有一个属性的接口在类之间进行通信

如果我具有相同的函数名,但一个是C ++,另一个是C,如何在C ++中区分函数名

如何从另一个类访问具有受保护的构造函数的类

如何在另一个函数中使用在函数内部声明的变量?(C#) UnassignedReferenceException: 变量 inRay 没有被赋值

如何在另一个 Python 类构造函数中使用 __enter__ 方法实例化 Python 类

C ++如何在命名空间中调用另一个类的静态函数

从Java到C ++:如何在另一个自定义类中使用一个自定义类var?

在C ++中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一外部类下)

不确定如何使用另一个类的对象创建带有参数的构造函数

如何使用另一个类的对象编写Class的复制构造函数

如何将具有字符串数据成员的类的对象传递给C ++中的另一个类

如何使用一个类的构造函数作为Java中另一个类的对象的参数?

如何在C ++中将类对象的引用正确传递到另一个类对象

如何使用继承从C#中的另一个类进行调用和对象

如何将C库函数加载到汇编中,以及如何在另一个C或汇编项目中使用汇编库函数

如何在 LINQ C# 中使用另一个列表过滤列表