小编And*_*rei的帖子

如何使用reinterpret_cast转换为c ++中的派生类指针

这是我的测试示例:

struct base {
    virtual ~base(){}
    int x;
};

struct derived: public virtual base {
    base * clone() {
        return new derived;
    }
    derived(): s("a") {}
    std::string s;
};

int main () {
    derived d;
    base * b = d.clone();
    derived * t = reinterpret_cast<derived*>(b);
    std::cout << t->s << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它在我打印s的行崩溃.由于"b"是指向派生类的指针,因此reinterpret_cast应该可以正常工作.我想知道为什么它会崩溃.同时,如果我用dynamic_cast替换reinterpret_cast,那么它可以工作.

c++ reinterpret-cast

6
推荐指数
1
解决办法
5713
查看次数

标签 统计

c++ ×1

reinterpret-cast ×1