小编Jus*_*Gru的帖子

C++ pimpl 习语:在 API 类的 getter 中返回 impl 指针

我对我的库的公共 API 中的类使用 pimpl 习惯用法,以受益于它的 ABI 稳定性等属性。在我的非公开代码中,访问 impl 对象并直接对其进行操作会很方便。

向 API 类添加 getter 以返回 impl 指针是否被认为是不好的做法?为什么?

我的库的客户端无论如何都无法使用 impl obj,因为它的接口是非公开的。另一方面,我的库内部代码现在可以在 impl obj 上进行操作。

公共.h:

class PublicClass{
    struct Impl;
    Impl* m_impl;
public:
    Impl* getImpl();
};
Run Code Online (Sandbox Code Playgroud)

实现.h:

struct Impl{
    int foo();
};
Run Code Online (Sandbox Code Playgroud)

主要.cpp:

#include "public.h"
#include "impl.h"

int main(){
    PublicClass p;
    auto pimpl = p.getImpl();
    auto interestingVal = pimpl->foo();
}
Run Code Online (Sandbox Code Playgroud)

只是一个设计问题。

c++ pimpl-idiom

5
推荐指数
1
解决办法
223
查看次数

标签 统计

c++ ×1

pimpl-idiom ×1