У меня есть несколько устройств, каждое из которых имеет свой собственный набор функций, каждое из которых имеет разные значения и разные типы переменных. Я пытаюсь создать набор данных, который хранит эти переменные простым способом для доступа к ним при динамическом добавлении или удалении этих устройств.
Моя идея состояла в том, чтобы создать класс, содержащий информацию об устройстве, со структурой, которая может использоваться для различных функций. Чтобы легко получить доступ к устройствам и функциям, имя устройства / функции будет сохранено на карте в качестве ключа, а указатель на экземпляр класса / структуры будет сохранен в качестве значения этого ключа. Для карты устройств это работало нормально. Однако для карты функций внутри класса я не могу заставить ее работать. Итак ...
1) Как правильно разместить указатель структуры на карте?
2) Хорошая идея поместить структуру в класс?
3) Я довольно новичок в C ++, так есть ли лучший STL или способ сделать это?
Этот фрагмент кода находится в файле .hpp
std::map<std::string, device*> devices;
class device {
private:
//Device info
std::string devName;
size_t devId;
char state;
std::map<std::string, struct func *func> functions; //---Error
//Setup for multiple functions
struct func{
//Functions info
std::string funcName;
size_t funcId;
char funcType;
};
public:
//Functions to get device and function values
Я запускаю этот код в Linux (Ubuntu 19.04) и использую код Visual Studio в качестве своей IDE. Это дает мне ошибку:
ожидал '>', где * func.