對於下面的代碼:的dynamic_cast(INT *爲int *) - 編譯錯誤
int i = 8;
int * p_i = &i;
int * p_j;
if (typeid(p_i) != typeid(p_j))
{
p_j= dynamic_cast<int *>(p_i);
}
我得到以下編譯錯誤:
error: cannot dynamic_cast ‘p_i’ (of type ‘int*’) to type ‘int*’ (target is not pointer or reference to class)
我缺少什麼?
P.S.這是一個我得到的行爲的簡單例子(帶模板函數等),所以不要在這段代碼中找到任何目的。
UPD: 由於這段代碼是模板函數的一部分,我不知道我是否得到完整的類或原語 - 這是原因。
['dynamic_cast'](http://en.cppreference.com/w/cpp/language/dynamic_cast)爲多態性與類。不使用像'int'這樣的本地類型的指針。如果你有兩個相同類型的變量,爲什麼首先使用一個演員? –
如果'typeid'上已經有'if',爲什麼要使用'dynamic_cast'?除非您希望轉換遍歷繼承層次結構,否則不需要。 –
因爲我有一個模板功能,可以有原始和polymorhyc類型 –