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 initialisiert
    

    Jetzt 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


Anmelden zum Antworten