C++ - Zugriff auf private Mitglieder der Klasse von ausserhalb der Klasse

Ich würde gerne wissen, ob es irgendeine Möglichkeit zum Zugriff auf private member einer Klasse außerhalb der Klasse. Ich erkläre mein problem.

Habe ich eine .hpp diese Datei enthält die definition der Klasse zusammen mit der privaten Mitglieder und der öffentlichen Funktion (das sind die einzigen, die ich exportieren möchten). In der übereinstimmung .cpp habe ich einige "support" - Funktion, die Notwendigkeit, Zugriff auf die privaten member der Klasse definiert .hpp.

Hier ist ein Teil von meinem code:

--- .hpp - - - -

namespace vision {
class CameraAcquisition {

    /* MEMBERS */
    CvSize size;
    CvCapture *device;
    CvScalar hsv_min,hsv_min2,hsv_max,hsv_max2;

    /* METHODS */

public:
    CameraAcquisition();
    ~CameraAcquisition();
    int findBall();
};
}

--- .cpp ---

#include "CameraAcquisition.hpp"

using namespace vision;

IplImage *grabFrame() {
     //code here
}

IplImage *convertToHSV(IplImage *origin) {
//code here
}

IplImage *calculateThresholdedImage(IplImage *converted) {
//code here
}

Was ich brauche, ist für diese drei Funktionen zum Zugriff auf die Elemente der Klasse CameraAcquisition. Gibt es eine Möglichkeit, es zu tun? Anregungen werden geschätzt. Danke Euch allen

BEARBEITEN
Sorry, ich vergaß ein wichtiges Stück von Informationen hier. In der Quell-Datei, findBall() aufrufen muss, diese Methoden. Ich definiert diejenigen Methoden, um den code leichter zu Lesen. Ich kann nicht erklären, diese Methoden in der definition der Klasse, weil ich nicht wollen, zu exportieren.
Wenn ich erkläre Ihnen in einem "privaten" block funktioniert alles einwandfrei, aber vielleicht ist es nicht richtig, dass (ich sehe nicht den Sinn, die eine header-Datei mit private-Methoden.

  • Können Sie ändern Sie die header-Dateien eingebunden? Wenn Sie & es existiert eine starke Kopplung zwischen den beiden Klassen dann können Sie friendSchiff,Beachten Sie, dass friendSchiff verbessert die Kapselung in diesem Fall eher als zu brechen es, wie einige vorschlagen & es ist weit besser, eine option als Kapselung brechen getter -, setter-Methoden oder gefährliche Hack mit Makros.Nur nicht entscheiden sich für diejenigen,schreiben Sie code, der lesbar ist und wartbar statt komische Sachen, die niemand außer dir verstehen kann/Pflege in der Zukunft.
  • mögliche Duplikate von Zugriff auf private member verwenden Vorlage trick
InformationsquelleAutor paxilpaz | 2012-05-15
Schreibe einen Kommentar