如何从其他子系统隐藏类

时间:2014-04-17 05:04:38

标签: c++

我可以将该类设为私有,并将其写入公共类。那么没有其他子系统可以访问它。 如何以不必在同一公共类中编写的方式创建它。

2 个答案:

答案 0 :(得分:4)

在C ++中,类型级别没有访问说明符的概念。您可以通过两种方式实现保持类私有:

  • 在另一个类中嵌套类,正如您已经提到的那样
  • 没有公共建设者;如果一个类没有可访问的构造函数,则无法实例化它。

答案 1 :(得分:3)

您可以将其放在单独的.cpp文件中,并且不为其指定头文件。这样做的结果是您无法从其他C ++代码访问它。

以下是一个例子:

worker.h

#pragma once
class Worker{
    //some class definition
};

worker.cpp

#include "worker.h"
class Hidden{
    //some class definition
};
//implementation of Worker class which uses Hidden class

some_other_file.cpp

//if you only include the header, the class Hidden does not exist
#include "worker.h"

如何编译?

g++ -c worker.cpp -o worker.o
g++ some_other_file.cpp  worker.o -o some_other_file