像这样的PIMPL实现是否有任何简单的语法

Is there any simpler syntax for a pimpl implementation like this?

本文关键字:任何 简单 语法 是否 PIMPL 实现 像这样      更新时间:2023-10-16

是否有以下模式更简单的语法?您可以如下所述执行此操作,但是伙计,这不是一个非常简单的想法的简短代码。是否有一些库会使这不那么尴尬或我应该考虑的其他模式?

#include <iostream>
template <typename T>
class abstr
{
public:
    class subclass
    {
    public:
        virtual void x(T) = 0;
    };
    void doThing(T a)
    {
        m_a->x(a);
    }
    abstr(subclass* a)
    {
        m_a = a;
    }
    subclass* m_a;
};
class concr : public abstr<int>::subclass
{
public:
    void x(int a)
    {
        std::cout << "hi!" << a;
    }
};
int main()
{
    concr a;
    abstr<int> r = abstr<int>(&a);
    r.doThing(5);
}

loki具有PIMPL助手:

http://loki-lib.sourceforge.net/index.php?n=idioms.pimpl

,但这主要有助于指针管理,复制构建等。pp。如果我没记错的话。乏味的部分仍然取决于您。

相关文章: