Hallo.
Nun kenn ich aus Perl die Vorzüge von "Hashes". Darin lassen sich sehr gut diese Informationen speichern und mit den "keys" die "values" oder mit den "values" die "Keys" abrufen.
Eine Hasmap ha die STL auch: https://en.cppreference.com/w/cpp/container/unordered_map
D.h. auch, dass ich nat. weiss, wie groß der Datenraum max. ist. Hier: 40-Pins -> 40-Werte (abzügl. 3,3V, 5V, GND-Pins usw.). Ein dynamisch angepasster Vector ist nat. wahrscheinlich sinnvoller. Vectoren habe ich auch schon im Code und habe mir mal angesehen, wie man eigene "Struct"'s anlegt. Kommt den Perl-Hashes schon sehr nahe.
Ich habe das jetzt so angelegt:
struct csv_values { string pin_number; string in_out_name; string in_out_function;
};
Es ist durchaus sinnvoll das was du über die Datan/Domäne weißt in Code zu gießen.
make
g++ -c -o src/lib/init_hw.o src/lib/init_hw.cpp src/lib/init_hw.cpp:In member function ‘void ZEROHW::init_hw(const std::vector<std::__cxx11::basic_string<char> >&)’: src/lib/init_hw.cpp:52:69:error: use of ‘auto READCSV::read_config_files(const string&)’ before deduction of ‘auto’ 52 | auto pin_defs = read_csv.read_config_files(file_names[0]); | ^ make: *** [<eingebaut>: src/lib/init_hw.o] Fehler 1
Hast du vllt die Funktion mit `auto` Rückgabetyp in einem Header nur deklariert, aber nicht definiert? `auto` geht nur, wenn der Compiler beim Aufruf auch sieht was in der Funktion zurückgegeben wird, wenn sie als auf irgendeineweise inline bzw. in der gleichen Kompiliereinheit definiert wird. Wenn die Definition in einer separaten Einiheit ist, dann musst du explizit sagen was der Rückgabetyp ist, also `std::vector<csv_values>`.
Viele Grüße
Jeffrey