這裏是我的情況:你能模板專門化一個沒有模板化的子類嗎?
基類,沒有模板類型:
struct Thing
{
} ;
模板類,擴展了非常基礎類
template <typename T> struct VertexWriter : public Thing
{
template <typename S>
bool intersects(S* otherThing)
{
// has a body, returns T or F
}
} ;
派生類,具體類型(無模板)
struct Rocket : VertexWriter<VertexPNCT>
{
template <typename S>
bool intersects(S* otherThing) ; // WANTS TO OVERRIDE
// implementation in VertexWriter<T>
} ;
但是template typename<S> bool VertexWriter<T>::intersects
不能被標記爲虛擬的,因爲它是一個模板類。
有很多類來自VertexWriter<VertexPNCT>
專業化,所以模板專門VertexWriter<VertexPNCT>
將無法正常工作。
所以正常的事情是提供模板專業化。
但Rocket
指定它是一個VertexWriter<VertexPNCT>
,所以它不再是模板類。它可以專注於或替代intersects
,就好像它是虛擬功能一樣嗎?