首页 > 解决方案 > 为什么我不能在朋友类中实例化一个构造函数是私有的类?

问题描述

我有两节课;Salary它旨在保存有关员工薪水的信息和计算,并且Employee具有类型对象class Salary和一些成员,例如员工的姓名和地址...

现在程序可以正确编译了!

*** 如果我以这种方式声明一个对象,主要的另一件事是:

Employee emp; // ok
Employee emp{}; // error?

标签: c++constructorfriend-class

解决方案


因为您没有为Employee初始化中的大括号提供构造函数,所以Employee emp{};将执行聚合初始化,这本质上意味着每个成员都使用默认规则在main(). 由于main()无权访问Salary构造函数,因此失败。

正如其他人指出的那样,添加Employee默认构造函数将解决您的问题:

class Employee {
    public:
        Employee() = default;
        std::string name_;
        Salary sal;
};

推荐阅读