Seite 1 von 1

cannot pass objects of non-POD type

Verfasst: 4. Dezember 2006 14:10
von Lepido
Hallo,
ich habe folgendes Problem:

habe mehrere QList<double> listen z.b list1, list2, list3

damit rufe ich die Funktion Write auf:

write(3,list1,list2,list3);


die Funktion write wird wie folgt declariert:

Code: Alles auswählen

int write(const int n,const QList<double> S_L,...)
{...}
beim compilieren bekomme ich folgende Warnung:

"warning: cannot pass objects of non-POD type 'class QList<qreal> through '...'; call will abort at runtime.

ich würde über jede Hilfe freuen,
danke in voraus,
Lepido

Verfasst: 4. Dezember 2006 14:18
von Christian81
Ein bischen mehr Code oder ein Testcase wären da schon hilfreich...

Code: Alles auswählen

#include <QList>

static int write(int i, const QList<double> &l1)
 {
  return 0;
 }

int main(int argc, char *argv[])
{
    QList<double> l1;
    
    write(1, l1);
    
    return 0;
}
funktioniert bei mir prima

Verfasst: 4. Dezember 2006 15:53
von upsala
Hier findest du eine Erklärung warum das nicht funktioniert bzw. was POD ist.

Verfasst: 4. Dezember 2006 15:57
von Christian81
Also wohl doch das was ich mir gedacht habe, aber mangels Sourcecode nicht verifizieren konnte... *lol*
Nenn die Funktion um oder includiere keine Standard-C Header.

Verfasst: 4. Dezember 2006 17:27
von Lepido
Hallo,
Danke für die schnelle Hilfe,

Leider kriege ich immer noch die warnung. hier ist mein code:

Code: Alles auswählen

write(string,3,ShutterSollWerten_L,ShutterIstWerten_L,KorrSollWerten_L);



int write(QString filename,
             int n,
             const QList<double> &S_L,
              ...
           )
{
  va_list ap;    
 

 va_start(ap, S_L);

  .
  .
  .
  QList<double> currentlist_L = va_arg(ap,QList<double>);  <--- an diese zeile gibt er die Warnung aus.
 
  va_end(ap);

 
  return 0;
}

danke nochmal für die Hilfe,
tschüss,
Lepido

Verfasst: 5. Dezember 2006 08:20
von Christian81
Lepido hat geschrieben: Leider kriege ich immer noch die warnung. hier ist mein code:
Liest Du überhaupt was wir geschrieben haben?