NULL Pointer auf Vectorliste

fujitsufan

Erfahrenes Mitglied
Hallo,

ist es möglich einen NULL-Pointer auf eine Vectorliste als Übergabeparameter zu überbeben.
Bei einem Integer oder *char geht´s doch auch.

header:
Code:
bool KollissionElemente(double dXL ,double dYU, double dXR, double dYO, double dOffsetY, char *cMsgText, int iSize, vector <tElemPos> &vElemPos=NULL);

cpp:
Code:
bool TTableauGlasCop::KollissionElemente(double dVLXL, double dVLYU, double dVLXR, double dVLYO, double dOffsetY, char *cMsgText, int iSize, vector <tElemPos> &vElemPos)

Dies mache in so fern einen Sinn, weil ich eine hohe Anzahl an Funktionsaufrufen habe, die ich nicht alle mit dem Übergabeparameter ergänzen möchte, brauche ich nicht.

Mit freundlichen Grüßen

fujitsufan
 
Hallo,

das wird auch bei einem Vektor gehen, allerdings erwartet deine Funktion einen Referenz auf einen Vektor und keinen Pointer. Referenzen dürfen aber nicht NULL sein.

C++:
vector<tElemPos> *vElemPos = NULL

Gruß,
Wolf
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Besser als dort NULL zu übergeben, wäre es evlt. einfach einen leeren Vektor zu übergeben.

C++:
bool KollissionElemente(double dXL ,double dYU, double dXR, double dYO, double dOffsetY, char *cMsgText, int iSize, vector <tElemPos> &vElemPos=vector<tElemPos>());

\edit: wobei ich erst jetzt sehe, das dein Parameter nicht const ist - ist das Absicht? Willst du da wirklich den Vektor ändern?
 
Hallo deepthroat,

ich will eigentlich umgehen, dass ich alle Funktionsaufrufe mit dem Zeiger auf den die Vektortabelle ergänzen muss.
In der Funktion will ich die Vektortabelle auf den der Zeiger hinweist füllen.
-> vElemPos.push_back(..);
mfg.
fujitsufan
 
Wenn du den Vektor intern befüllen willst musst du der Funktion schon eine Möglichkeit mitgeben an den Vektor heran zu kommen. Vorallem, wenn du in der Funktion die push_back Methode aufrufst, vElemPos aber NULL ist wird dir deine Applikation abrauchen.

Ansonsten die Funktion in eine Klasse packen und den Vektor als Klassen-Feld definieren, dann kann die Methode direkt auf den Vektor zugreifen und du brauchst ihn nicht als Parameter übergeben.
 
Hallo,

den Aufruf gestalte ich so:
KollissionElemente(dPosXL, dPosYU, dPosXR, dPosYO, dOffsetY, cMsgTextTemp, sizeof(cMsgTextTemp), &vElemPos)

In der Funktion fülle ich die Vektortabelle mit
if(vElemPos != NULL)
{
 
Sorry, ging zu schnell raus.

Den Aufruf gestalte ich so:
KollissionElemente(dPosXL, dPosYU, dPosXR, dPosYO, dOffsetY, cMsgTextTemp, sizeof(cMsgTextTemp), &vElemPos)

In der Funktion fülle ich die Vektortabelle mit
if(vElemPos != NULL)
{
vElemPos->push_back(..);
}

Funktioniert.

Vielen Dank!

mfg.
fujitsufan
 
Zurück