封装在头文件中

时间:2016-08-31 07:43:13

标签: c++ header-files

我有一个包含2个类的头文件。 A类(这是一个非常大的类)和继承A类的B类。我不希望人们被允许创建A类对象,甚至可以看到它的静态成员。他们应该只与B班合作。这样做的最佳方式是什么。

(一般来说A是"助手类")

2 个答案:

答案 0 :(得分:6)

要限制类的创建,请将类A的构造函数设置为private,并将类B声明为友元类。这样只有B可以实例化A。

class B;
class A
{
private:
    A();
    friend class B;
};

这同样适用于方法(静态或非静态):将它们全部设为私有,而友方声明将允许B访问A的成员。

修改:也适用于受保护的。

答案 1 :(得分:0)

  

我不希望允许人们创建A类对象

您正在寻找的是“抽象基类”。在C ++中,任何至少有一个抽象成员的类都是自动抽象类,没有其他语言中的其他关键字。

protected
  

甚至可以看到其静态成员

好吧,不要把它们公之于众。让他们privatefriend并授予Dictionary<string, string>访问您的B类。