class GAGenome {
virtual void method(){};
};
template <class T>
class GAArray {
};
template <class T>
class GA1DArrayGenome : public GAArray<T>, public GAGenome {
};
int main() {
GA1DArrayGenome<float> genome;
const GAGenome & reference = genome;
auto cast = dynamic_cast<const GA1DArrayGenome<int> &>(reference);
}
這顯然是錯誤的方案(因爲模板參數是不同的)與如何調試一個std :: bad_cast異常
terminate called after throwing an instance of 'std::bad_cast'
what(): std::bad_cast
Aborted (core dumped)
崩潰有沒有路怎麼走的什麼地方出了錯精確的診斷,超越運行時錯誤消息?有什麼,可以指出我的int/float錯誤嗎?我要尋找一個描述性錯誤消息像
const GA1DArrayGenome<float> &
不能轉換到const GA1DArrayGenome<int> &
更妙的是,因爲C++的類型可以拿到倍多毛的,該工具可能會注意到在模板參數的精確差異。
這是'std'例外的不幸的副作用:以試圖避免內存分配他們的消息幾乎是無用的,因爲他們沒有堆棧跟蹤,所以幾乎不可能知道它們來自哪裏。另一方面,它們很輕便... –