Wie benutze ich "operator Funktion()"?

Jennesta

Erfahrenes Mitglied
Hi,
ich habe folgende Klasse:
C++:
class CV_EXPORTS Mat
{
public:
    // constructors
    Mat();
[...]
    // assignment operators
    Mat& operator = (const Mat& m);
    // converts header to CvMat; no data is copied
    operator CvMat() const;
    // converts header to IplImage; no data is copied
    operator IplImage() const;
[...]
}


Mein Problem ist, dass ich nicht weiß wie ich "operator IplImage()" nutzen kann. Ich weiß wie man Operatoren überläd, jedoch ist mir bisher noch kein überladener Operator als Funktion untergekommen und ich bin etwas ratlos. Kann mir da jemand vielleicht mit einem kurzen Beispiel auf die Sprünge helfen?

Grüße Jennesta
 
Diesen Operator kannst du "aufrufen", indem du eine Instanz von Mat an eine Funktion übergibst, die einen Parameter vom Typ CvMat (oder IplImage) erwartet.
 
Hallo,

diese Art von Operatoren nennt man auch Typumwandlungs-Operatoren. Sie werden allgemein immer dann aufgerufen, wenn eine Typumwandlung verlangt wird. Das kann implizit geschehen, wie z.B. beim von Endurion erwähnten Funktionsaufruf. Außerdem treten implizite Umwandlungen u.a. noch bei bei Zuweisung an Variablen oder Vergleich mit Werten eines anderen Typs auf oder bei der Verwendung als booleschen Wert (z.B. bei einer if-Abfrage). Man kann die Umwandlung aber auch explizit machen, indem man entweder
a) einen entsprechenden Cast verwendet:
C++:
Mat m;
CvMat cvm = static_cast<CvMat>(m);
oder
b) den Operator ganz einfach aufruft:
C++:
Mat m;
CvMat cvm = m.operator CvMat();
Dabei ist erstere Variante zu bevorzugen.

Grüße,
Matthias
 
Zurück