以下模式有更简单的语法吗?您可以按照以下说明进行操作,但是,伙计,这不是一个简单的想法的简洁代码。是否有一些库可以使这种方法减少尴尬,或者我应该考虑其他一些模式?

#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

但是,如果我没记错的话,它主要有助于指针管理,复制构造等。
繁琐的部分仍然取决于您。

10-07 22:17