-6

I'm working in Qt parsing a XML file, using the QTreeWidget for displaying the sections of the XML. I want to maintain pointers to each section "heading".

I have these pointers defined:

QTreeWidgetItem* groupExport,
                 groupDesign,
                 groupSheet,
                 groupTitleBlock,
                 groupComponents,
                 groupLibParts,
                 groupLibraries,
                 groupNets;

I have these functons:

//////////////////////////////////////////////////////////////////////////////
/// treeAddRoot
///---------------------------------------------------------------------------
QTreeWidgetItem* window_Main::treeAddRoot(QString name) {
    QTreeWidgetItem *treeRoot = new QTreeWidgetItem(ui->treeSourceFile);
    ...
    return treeRoot;
}
QTreeWidgetItem* window_Main::treeAddRoot(QString name, QString description) {
    QTreeWidgetItem *treeRoot = new QTreeWidgetItem(ui->treeSourceFile);
    ...
    return treeRoot;
}

//////////////////////////////////////////////////////////////////////////////
/// treeAddGroup
///---------------------------------------------------------------------------
QTreeWidgetItem* window_Main::treeAddGroup(QTreeWidgetItem *treeParent, QString name) {
    QTreeWidgetItem *treeChildGroup = new QTreeWidgetItem(treeParent);
    ...
    return treeChildGroup;
}
QTreeWidgetItem* window_Main::treeAddGroup(QTreeWidgetItem *treeParent, QString name, QString description) {
    QTreeWidgetItem *treeChildGroup = new QTreeWidgetItem(treeParent);
    ...
    return treeChildGroup;
}

//////////////////////////////////////////////////////////////////////////////
/// treeAddChild
///---------------------------------------------------------------------------
void window_Main::treeAddChild(QTreeWidgetItem *treeParent, QString name) {
    QTreeWidgetItem *treeChild = new QTreeWidgetItem(treeParent);
    ...
    treeParent->addChild(treeChild);
}
void window_Main::treeAddChild(QTreeWidgetItem *treeParent, QString name, QString description) {
    QTreeWidgetItem *treeChild = new QTreeWidgetItem(treeParent);
    ...
}

These are defined for "temporary" use while parsing:

QString tempTag, tempValue;

For the parsing code, the compiler seems to think this is OK:

if (tempTag.contains("export")) {
   ...            
   groupExport = treeAddRoot(tempTag);
}

However, a few lines later, with this:

if (tempTag.contains("design")) {
    ...
    groupDesign = treeAddGroup(groupExport, tempTag);
}

The compiler errors with:

error: no match for ‘operator=’ (operand types are ‘QTreeWidgetItem’ and ‘QTreeWidgetItem*’)
groupDesign = treeAddGroup(groupExport, tempTag);
            ^

Could someone help me understand the difference and why compilation is OK with one and failing on the other ?

Thanks in advance.

  • 6
    "I have these pointers defined" Only `groupExport` is a pointer, the rest are normal instances. – Rakete1111 Apr 18 '17 at 09:14
  • 1
    Possible duplicate: http://stackoverflow.com/questions/13618282/declaring-multiple-object-pointers-on-one-line-causes-compiler-error – Rakete1111 Apr 18 '17 at 09:14

1 Answers1

1

Define pointers like this:

QTreeWidgetItem *groupExport,
                *groupDesign,
                *groupSheet,
                *groupTitleBlock,
                *groupComponents,
                *groupLibParts,
                *groupLibraries,
                *groupNets;
zhm
  • 3,513
  • 3
  • 34
  • 55