gpt4 book ai didi

c++ - 从 ‘Derived X::*’ 到 ‘Base X::*’ 的成员指针无效转换

转载 作者:行者123 更新时间:2023-11-30 02:34:20 24 4
gpt4 key购买 nike

我想知道为什么在指针到成员转换的情况下,从派生类指针到基类指针的简单转换会失败。例如,

    struct Base {};
struct Derived: public Base {};

struct X {
Derived field;
};

int main(int argc, char *argv[]) {
Base X::* ptr1 = &X::field;
return 0;
}

给出错误:

$ g++ t.cc
t.cc: In function ‘int main(int, char**)’:
t.cc:9:24: error: invalid conversion from ‘Derived X::*’ to ‘Base X::*’ [-fpermissive]
Base X::* ptr1 = &X::field;
^

最佳答案

因为两者之间没有有意义的转换。

您正在尝试将“指向 B 类中的事物的指针”分配给“指向 A 类中的事物的指针”类型的对象。

这两个类之间的继承关系在这里无关紧要——类 A 根本不包含您要指向的内容。类型系统正在发挥作用。

无论您想要做什么,您都必须找到其他方法。很遗憾,您没有说明那是什么,所以我无法提供更多帮助!

关于c++ - 从 ‘Derived X::*’ 到 ‘Base X::*’ 的成员指针无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com