Vector Übergabe

Hallo Ich habe folgendes Problem.

Ich definiere eine struct und binde diese in einen vector ein.

struct tRechteck{
long int xPos;
long int yPos;
double Breite;
long int Hoehe;
};

dazu der vector:

std::vector Rechtecke;

Ich setze mehrere Felder des Vectors :

int xK = 50;

for (int k = 0; k PrintBarcode(Rechtecke);

die funktionsheader lauten in der cPDF.h

bool PrintBarcode(std::vector & Rechtecke);

und in der cPDF.cpp

bool cObjectPDF::stuck_out_tongue:rintBarcode(std::vector & Rechtecke){

// generiert Rechtecke für Barcode
}

ich habe jetzt folgendes Problem ich bekomme beim Kompilieren folgenden Felhler:

…/Tester.cpp:127: no matching function for call to `cObjectPDF::stuck_out_tongue:rintBarcode(std::vector >& )’

An was liegt das???

Da ich erst seit kurzem mich mit C++ beschäftige stehe ich voll auf dem Schlauch.

Hallo Ich habe folgendes Problem.

Ich definiere eine struct und binde diese in einen vector ein.

struct tRechteck{
long int xPos;
long int yPos;
double Breite;
long int Hoehe;
};

dazu der vector:

std::vector Rechtecke;

Ich setze mehrere Felder des Vectors :

int xK = 50;

hier würde ich mal deklarieren:

tRechteck Rechteck;

dann die Daten rein:

for (int k = 0; k PrintBarcode(Rechtecke);

die funktionsheader lauten in der cPDF.h

bool PrintBarcode(std::vector &
Rechtecke);

Die „PrintBarcode“ ist also eine globale Funktion, gut. Oder ist die in der Klasse drin?

und in der cPDF.cpp

bool cObjectPDF::stuck_out_tongue:rintBarcode(std::vector
& Rechtecke){

Das ist also „PrintBarcode“ von der Klasse „cObjectPDF“,beachte die „::“.

// generiert Rechtecke für Barcode
}

ich habe jetzt folgendes Problem ich bekomme beim Kompilieren
folgenden Felhler:

…/Tester.cpp:127: no matching function for call to
`cObjectPDF::stuck_out_tongue:rintBarcode(std::vector >& )’

An was liegt das???

Da ich erst seit kurzem mich mit C++ beschäftige stehe ich
voll auf dem Schlauch.

Der Compiler findet also (siehst du an der Fehlermeldung) in der Klasse „cObjectPDF“ keine Funktion „PrintBarcode“ mit dieser Signatur (Argumente), in der Klasse fehlt ihm ein passender Prototyp. Du musst Dich also entscheiden, ob Du die globale Funktion (wenn es denn eine gibt) oder die von der Klasse aufrufen willst.

lg
Martin

Hallo Martin.

die Struktur ist bereits definiert. Habe es leider vergessen sie im Sourcecodebeispiel einzufügen.

Die Funktion Printbarcode ist keine globale Funktion. Davor werde ich mich hüten. Ich habe eigentlich den selben Funktionskopf in der Header datei und in der cpp . Eclipse meckert erst, wenn ich die Klasse in einer anderen Klasse instanziere und dann darauf zu greifen will. Wenn ich nur die Funktion schreibe und sie in der Headerdatei bekannt mache meckert der Compiler nicht. Er meckert erst wenn ich die Funktion benutzen will.

Könnte es daran liegen das ich die struct zwar in der gleichen Headerdatei definiert habe wie die PrintBarcode , aber nicht im gleichen Namensraum?

Beispiel aus der Headerdatei:

#ifndef COBJECTPDF_H_
#define COBJECTPDF_H_

#include
#include
#include
#include „TextMatrix.h“

struct tRechteck{
long int xPos;
long int yPos;
double Breite;
long int Hoehe;
};

class cObjectPDF
{
public:

cObjectPDF(std::string sFilename);
virtual ~cObjectPDF();
bool PrintBarcode(std::vector & Rechtecke);

};

#endif /*COBJECTPDF_H_*/

Hallo Martin.

Meine Vermutung war falsch. Es liegt nicht an der Struktur. Ich habe einen weiteren Parameter der nicht korrekt instanziert wird. Es ist eine zusätzlichen Koordinatenmatrix. Muss dort noch den Fehler korrigieren.

Danke für deine Hilfe.

Gruß Sven