假设我有一个纯粹的抽象基类。类模板实现了这个接口,并且是专用的。现在,我的问题是这个专业化应该能够处理专业化的子类。所以,我尝试了enable_if,但是这个子类最终变成了抽象的...我怎样才能解决这个问题?用于抽象基类的子类的C++模板专门化
例如:
// This example doesn't work because a subclass of A does not satisfy the
// specialization for B<T>::foo()
class A {
public:
virtual void foo() = 0;
};
template <class T>
class B : public A {
...
public:
...
void foo();
...
};
void B::foo() {
...
}
template <>
void B<A>::foo() {
...
}
class C : A {
...
public:
...
void foo();
...
};
int main() {
B<C> bar; // I was like "this is gonna work!! :) :D"
bar.foo(); // But this calls B::foo() instead of B<A>::foo()... :'(*sob*
}
而另一个例子:
如何解决这个任何想法? 谢谢!
尝试'虚拟空虚foo()= 0' – Ylisar
@Ylisar对不起,这是一个错误的例子部分。当然,如果它不是虚拟的,我会有其他问题。 – kotakotakota