我试着休息一下,但还是无法解决问题。我甚至不确定应该使用什么搜索词。有人可以指点我正确的方向吗?
我想要类似于这样的东西:
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_one
选择phase_two
。而所有这些都是在运行时完成的,在读取文件的BOM之后。我更喜欢不使用boost或c++11来完成这个任务。 如果有一种使用boost方法可以做到这一点,我会很感兴趣,但必须能够在没有boost库的情况下实现,即使我必须自己创建类似的方法/模板。