以下模式是否有更简单的语法?你可以按照下面的描述去做,但是对于一个非常简单的想法,它不是简洁的代码。是否有一些库让我不那么尴尬或者我应该考虑其他一些模式?
#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);
}
答案 0 :(得分:1)
Loki有一个pimpl帮手:
http://loki-lib.sourceforge.net/index.php?n=Idioms.Pimpl
但如果我没记错的话,它主要有助于指针管理,复制构造等。 繁琐的部分仍由你决定。