【发布时间】:2015-02-18 06:47:15
【问题描述】:
我有两个类,一个继承自另一个:
struct A {
(pure?) virtual tt returns_something();
}
template <typename T>
struct B : A {
virtual T returns_something();
}
我该如何进行这项工作,以使 returns_something() 具有正确的类型签名。
我相信这是一个奇怪重复的模板模式的工作:
template <typename T>
struct A {
pure virtual typename T::tt returns_something();
}
template <typename TT>
struct B : A<B<TT>> {
typedef TT tt;
virtual tt returns_something();
}
但是,这似乎抱怨“在 BB 实例化为 TT 作为浮点数时)。
有什么想法吗?在这种情况下,这是正确的方法吗?还有其他更适合的方法吗?
注意:这是一个简化的情况。在同一类型 B 上模板化 A 只会使 A 有很多模板参数,我不希望这样。
【问题讨论】:
标签: c++ templates inheritance crtp