【发布时间】:2014-07-05 20:40:39
【问题描述】:
我有几个结构:
struct Token
{
//some content
}
Then follows a bunch of structs that inherit from Token:
struct A : public Token{
//Stuff
}
.
.
.
struct Z : public Token{
//Other stuff
}
我有一个向量 std::vector 填充了从 A 到 Z 的子类,当我尝试将向量中的任何元素转换为子类时,我的程序崩溃了。我正在通过执行以下操作进行投射:
A subclass = *((A * ) &vector[0]);
我做错了什么?
【问题讨论】:
-
向下转换时使用
dynamic_cast,C style cast 不保证安全.. -
你不可能有“一个充满子类的向量”。向量仅存储一种固定类型的元素。
-
可能向量存储了指向父类的指针,而 OP 在将子类指针存储到向量之前对其进行了强制转换。
标签: c++ inheritance casting subclass superclass