以下模式有更简单的语法吗?您可以按照以下说明进行操作,但是,伙计,这不是一个简单的想法的简洁代码。是否有一些库可以使这种方法减少尴尬,或者我应该考虑其他一些模式?
#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
但是,如果我没记错的话,它主要有助于指针管理,复制构造等。
繁琐的部分仍然取决于您。