繁体   English   中英

QObject基类的C ++类型转换为继承的对象

[英]C++ type conversion of a QObject base class to an inherited object

我有类A(..):QObject(..)B(..):A(..)并创建一个对象A,以后应该转换/扩展到类型B:

A* obA = new A(...);
obA->setMember(true);
...
#ifdef EITHER
obA = new B(...); // --> shouldBeTrue == false, see below
#else
*obA = B(...);  // --> Error - see question
#endif
bool shouldBeTrue = obA->getMember();

原因是我在创建基础对象时还不知道最终类型。 我希望能够使用更精细的类型扩展此对象,然后可以访问基础对象成员。

我理解C ++支持类型转换,但我的代码导致错误,因为它调用QObject的复制操作符,故意将其设置为私有以防止复制QObject“树”。

这是一个概念性问题吗? 我的指针错了吗?


编辑:添加替代行,编译但不按我的预期执行。

克隆QObject是概念错误。 请参阅: QObject文档

要从B : public A新实例访问A : public QObject现有实例B : public A您可以将指向现有实例的指针传递给构造函数中的新实例。

A *a = new A();
B *b = new B(a);

B构造函数中,您可以使用A实例执行任何操作,例如复制其数据部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM