2017-09-01 1 views
-4

ich auf eine Klasse Struktur zuzugreifen bin versucht, aber es gibt mir die folgende Fehlermeldung:Fehler, wenn ich versuche zu einer Klasse-Struktur zuzugreifen

InternalGpsReceiver.h:

class InternalGpsReceiver { 
    public: 
     static struct gps_data_t gpsdata; 
     InternalGpsReceiver(void); 
}; 

InternalGpsReceiver. cav:

InternalGpsReceiver::InternalGpsReceiver(void){ 
    int err = gps_open("localhost", DEFAULT_GPSD_PORT, this->&gpsdata); 
} 

Übersetzungsfehler:

error: expected unqualified-id before '&' token 
    int err = gps_open("localhost", DEFAULT_GPSD_PORT, this->&gpsdata); 
+4

Sieht aus wie Sie benötigen '& InternalGpsReceiver :: gpsdata' dort. – user0042

+0

Wenn ich dies versuche, erhalte ich den folgenden Fehler: undefinierter Verweis auf 'InternalGpsReceiver :: gpsdata ' – ClaudiaGR

+1

Brauchen Sie nicht nur' int err = gps_open ("localhost", DEFAULT_GPSD_PORT, gpsdata); 'oder müssen Sie eine übergeben Zeiger: 'int err = gps_open (" localhost ", DEFAULT_GPSD_PORT, & gpsdata);'? – EdChum

Antwort

0

Sie müssen Ihre Struktur vor der Verwendung initialisieren. Eine vollständige Erklärung finden Sie unter .

Unten ist ein minimaler Code, der kompiliert. Ich habe gerade ein Modell für gps_data_t, gpsopen und DEFAULT_GPSD_PORT erstellt.

InternalGpsReceiver.h:

#define DEFAULT_GPSD_PORT 8080 

struct gps_data_t { 
    int a; 
    int b; 
}; 

int gps_open(const char *xx, int x, struct gps_data_t *gps){ return 1;} 

class InternalGpsReceiver { 
public: 
    InternalGpsReceiver(void); 
    static gps_data_t gpsdata; 
} 

InternalGpsReceiver.cpp:

#include "InternalGpsReceiver.h" 

// The line that you missed. 
gps_data_t InternalGpsReceiver::gpsdata; 

InternalGpsReceiver::InternalGpsReceiver(void) 
{ 
    int err = gps_open("localhost", DEFAULT_GPSD_PORT, &InternalGpsReceiver::gpsdata); 
}; 


int main() 
{ 
    InternalGpsReceiver x = InternalGpsReceiver(); 
    return 1; 
} 
+0

Die Struktur wird in einer internen Bibliothek initialisiert. Das Problem war, dass ich vergessen habe, "gps_data_t InternalGpsReceiver :: gpsdata;" in meiner .cpp. Vielen Dank für Ihre Antwort. – ClaudiaGR

Verwandte Themen