[英]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.