繁体   English   中英

从静态助手功能访问私有成员

[英]Access to private member from static helper function

我正在寻找一种实现需要访问嵌套私有类的朋友/私有函数的方法。 我想避免在头文件中声明它,以抽象化实现细节并避免使头过大。 这些函数也不应在实现它们的源文件之外调用。

理想情况下,它应该是静态函数,但是可以通过某种方式访问​​私有类/成员。

我读过,无名命名空间至少可以帮助我解决后一个问题,这是正确的吗?

谢谢。

您正在寻找赫伯·萨特(Herb Sutter) 在第100101 星期大师中定义的PImpl习惯用法。

这个想法是定义一个公共接口,它包含一个私有接口的不透明句柄:

// PUBLIC INTERFACE
struct API
{
    void some_function();

private:
    struct Impl; // not necessarily a nested type
    Impl* pImpl;
};

实现如下

#include <private_interface.h>
void API::some_function() { pImpl->some_function(); }

私有接口是

// PRIVATE INTERFACE
struct API::Impl
{
    void some_function() { /* actual code */ }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM