假設我有一個純粹的抽象基類。類模板實現了這個接口,並且是專用的。現在,我的問題是這個專業化應該能夠處理專業化的子類。所以,我嘗試了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