我试着睡在上面,但还是迷路了。我什至不确定我应该使用什么搜索词。有人可以指出我正确的方向。
我想要这样的东西:
template < typename Interim >
class phase_one
{
Interim do_something () ;
}
template < typename Output, typename Interim >
class phase_two
{
Output do_something_more ( Interim ) ;
}
template < Output >
class main_class
{
phase_one m_first;
phase_two m_second;
Output do_main ( )
{
return m_second.dosomething_more( m_first.do_something() );
}
}
希望您可以从伪代码中看到我需要在两个模板类上存储和调用。但是Interim
直到运行时才知道类型。我事先知道的唯一一件事是Output
类型以及两个阶段具有共同类型的事实。
如何存储这些对象以及如何使它们一起工作?这是需要类型擦除的实例吗?
编辑:
phase_one
将是我std::codecvt
的phase_two
另一个codecvt
创作。我需要phase_two
根据phase_one
. 所有这些都是在运行时完成的,在读取文件的 BOM 之后。
我宁愿在没有 boost 或 c++11 的情况下这样做。如果有这样做的 boost 方法,我会有兴趣看到它,但它必须可以在没有 boost 库的情况下实现,即使我必须自己创建一个类似的方法/模板。