C ++ устанавливает значение std :: map для указателя экземпляра структуры - PullRequest
1 голос
/ 03 мая 2019

У меня есть несколько устройств, каждое из которых имеет свой собственный набор функций, каждое из которых имеет разные значения и разные типы переменных. Я пытаюсь создать набор данных, который хранит эти переменные простым способом для доступа к ним при динамическом добавлении или удалении этих устройств.

Моя идея состояла в том, чтобы создать класс, содержащий информацию об устройстве, со структурой, которая может использоваться для различных функций. Чтобы легко получить доступ к устройствам и функциям, имя устройства / функции будет сохранено на карте в качестве ключа, а указатель на экземпляр класса / структуры будет сохранен в качестве значения этого ключа. Для карты устройств это работало нормально. Однако для карты функций внутри класса я не могу заставить ее работать. Итак ...

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.

1 Ответ

0 голосов
/ 13 мая 2019

Спасибо, ребята, я смог разобраться.

std::map<std::string, device*> devices;
class device {
private:
   //Device info
   std::string devName;
   size_t devId;
   char state;

   //Setup for multiple functions
   struct func{
       //Functions info
       std::string funcName;
       size_t funcId;
       char funcType;
   };

   //Map of funcution Id's to pointers of function objects
   std::map <id, func*> functions;

  public:
  //Functions to get device and function values

Это была ошибка предварительной декларации.

...