【问题标题】:How to set an attribute of a base class in a constructor of a sub class c++如何在子类c ++的构造函数中设置基类的属性
【发布时间】:2020-07-08 14:56:27
【问题描述】:

我在类Student 中有以下构造函数,它是基类Person 的子类:

namespace Uni
{
    Uni::Student::Student(string majorCourse, int enrollNumber , string name, int age, bool isStudying)
        : Uni::Person::Person(std::__1::string name, int age, bool isStudying), majorCourse_(majorCourse), enrollNumber_(enrollNumber)    
    {
        cout << "[Temp] Student Default Constructor" << endl;
    }
    ...
}

我想将属性name_age_isStudying_(它们是Person 类的属性)设置为nameageisStudying 的值,但是我在此声明中遇到错误:

Uni::Person::Person(std::__1::string name, int age, bool isStudying)

类型名称不允许

我该如何解决这个问题?

【问题讨论】:

  • 附带说明,切勿直接使用std::__1::string,这是编译器标准库的实现细节。只需改用std::string,然后让库将其映射到它需要的任何实现。

标签: c++ constructor derived-class base-class


【解决方案1】:

你应该只是将参数转发到基类,所以丢失类型名

 Uni::Student::Student(string majorCourse, int enrollNumber , string name, int age, bool isStudying)
  : Uni::Person::Person(name, age, isStudying),
    majorCourse_(majorCourse),
    enrollNumber_(enrollNumber)
 { }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多