如何使客户端无法访问名称空间的功能

时间:2019-04-28 10:43:14

标签: c++ class oop namespaces

我正在写一个包装在名为namespace的{​​{1}}中的类。我正在使用其函数之一为cs的库。该函数必须修改该类的某些受保护成员,因此我在相同的function pointer命名空间中编写了一个自由函数,并将其设为该类的cs。这样做使客户端可以使用该功能。但是由于明显的原因,该功能必须不能从客户端访问。

示例代码在这里:

friend function

1 个答案:

答案 0 :(得分:3)

如果要使自由功能无法在另一个编译单元中访问,则可以使用嵌套的anonymous namespace

namespace cs{

   class A
   {
     protected:
        //...
        friend int myFunc(int valInt, float valFloat);
     public:
        void abc();
   };

   namespace {  // anonymous nested namespace
        int myFunc(int x, float y){
           ...
     }
   }

   void A:: abc() {
        libFunc(this, myFunc);
   }    
}