static member vom Typ vector<MyStruct>
-
Hallo,
ich habe folgende Header-Datei:
#include <stdio.h> #include <string.h> #include <vector> class Helper { private : struct TTypes { char type_name[20]; unsigned char type_code; }; static std::vector<TTypes> types; public : static void addType(char name[20], unsigned char code); };und dazu folgende CPP-Datei:
#include "Helper.h" void Helper::addType(char name[20], unsigned char code) { FILE *out; struct TTypes type; strcpy(type.type_name, "type01"); type.type_code = 0x81; Helper::types.push_back(type); if ((out = fopen("types.cfg", "w")) != NULL) { fwrite(&Helper::types, sizeof(Helper::types), 1, out); fclose(out); } }Nun die Frage:
Wieso sagt mir der Compiler immer
[Linker Error] Unresolved external 'Helper::types' referenced from x:\MyPath\HELPER.OBJ
vielen Dank
Saxony
-
Hallo,
das liegt daran, dass du dein static-Member noch nicht in der cpp-Datei definiert hast, also so:
//foo.hpp struct Foo { static int bar; };//foo.cpp #include "foo.hpp" int Foo::bar; //wird automatisch mit 0 initialisiertJetzt dürfte die Lösung deines Problemes keine Schwierigkeiten mehr bereiten...
MfG
GPC
-
Hallo,
vielen Dank!
Mit
std::vector<Helper::TTypes> types;hats funktioniert.

bye Saxony