我正在尝试从QObject *转换为自定义类类型,但是应该接收此转换的指针始终为NULL。
相关的代码行:
这是演员
的功能void CFCInterface::fnAddConn()
{
CFCConnections* f_pConn ;
f_pConn= new CFCConnections(this);
QObject* f_pObject = this;
while(f_pObject)
{
f_pConn = qobject_cast<CFCConnections*>(f_pObject);
if(f_pConn)
break;
f_pObject = f_pObject->parent();
}
if( f_pConn == 0 )
return;
}
这在FCInterface的主构造函数中调用:
`CFCInterface::CFCInterface(QObject* parent): CInterface(parent), CFCAbstract()
{
//Some other functions being called
fnAddConn();
}
CFCInterface::~CFCInterface()
{
}
`
f_pConn保持为NULL。如果有人可以猜测为什么会这样,我会有一些领导跟随。
作为参考,我将添加类和头文件。除了使这个演员工作之外,他们没有任何功能。
部首:
#include headers
class CFCConnections: public CResourceItem
{
Q_OBJECT
public:
CFCConnections(QObject*);
~CFCConnections();
};
#endif
类别:
#include headers
CFCConnections::CFCConnections(QObject* parent) : CResourceItem(parent)
{
//Empty contructor
}
CFCConnections::~CFCConnections()
{
}
PS:我不认为代码试图做的是相关的,但是如果有人想知道FCInterface是FCConnections的父类。我正在尝试实现一个树模型列表,其中每个项目都有自己的类和功能。我正在使用强制转换使“连接”出现在FCInterface下。
答案 0 :(得分:0)
这非常简单:执行此操作的对象不是CFConnections
的后代。
您需要能够用手指指向QObject
构造函数调用和/或setParent
调用,以便建立这种父子关系。
您的代码示例不完整,并且您有许多不相关的详细信息。提供显示问题的单个文件示例。
答案 1 :(得分:0)
可能的解决方案:
原来错误在第一行。我写了CFCConnections* f_pConn = 0
认为这会为我做适当的内存分配。
将其更改为以下内容可解决问题:
CFCConnections* f_pConn;
f_pConn = new CFCConnections(this);