Ich habe die folgenden Dateien Struktur, die die Definition einer Struktur einen einkapselnden Typ enthalten, wenn ich versuche, auf ein Mitglied der Struktur zugreifen, bekomme ich die Member access into incomplete type
Fehler. Was ist das Problem?Mitglied Zugriff in unvollständigen Typ Fehler
foo_encoder.c:
#include "foo.h"
//...
struct FooEncoder {
int A;
int B;
foo_int32 C;
//...
}
foo.h:
extern "C" {
typedef struct FooEncoder FooEncoder;
//...
}
foo_interface.h:
typedef struct MyFooEncInst FooEncInst;
foo_interface.cc:
#include "foo_interface.h"
#include "foo.h"
//...
struct MyFooEncInst {
FooEncoder* encoder;
};
//...
MyFoo_Encode(FooEncInst* inst,...) {
//...
if (d > inst->encoder->C) { // This is where I get the error
//...
}
foo_int32
wird an anderer Stelle definiert sind.
foo_encoder.c in den Code einfügen und es wird funktionieren. Lass es mich danach wissen und werde die volle Antwort geben. Eine andere Möglichkeit besteht darin, die vollständige Definition von struct FooEncoder in der neuen .h-Datei zu machen und sie einzuschließen. – Nick
Sie versuchen auf einen Member einer Variablen vom Typ 'MyFooInst *' zuzugreifen. In dem von Ihnen angegebenen Code gibt es jedoch keine Definition des Typs MyFooInst. – sigy