使用下一個定義與類模板
class A {};
class B : public A {};
void f(A* a) {}
調用f(new B)
隱式轉換是可能的,因爲B*
隱式轉換爲A*
,對不對?
但是,當像std::vector
這樣的類模板執行此操作時,會生成編譯錯誤。
void f(std::vector<A*> v)
{}
int main()
{
std::vector<B*> v;
f(v); //error! "no suitable user-defined conversion..."
return 0;
}
這是爲什麼?
'std :: vector '和'std :: vector '是完全不同的類型,但'B'是從'A'驅動的。 – Rabbid76
有沒有解決方法? – Pilpel