C++ 将 std::map 值设置为结构实例的指针

C++ set std::map value to pointer of struct instance

我有多个设备,每个设备都有自己的一组功能,每个都有不同的值和不同的变量类型。我正在尝试创建一个数据集,以一种简单的方式存储这些变量,以便在动态添加或删除这些设备时访问它们。

我的想法是创建一个 class 来保存设备信息,以及一个可用于不同功能的结构。为了轻松访问设备和功能,device/function 名称将作为键存储在映射中,指向 class/struct 实例的指针将作为该键的值存储。对于设备映射,这工作正常。但是,对于 class 内的函数映射,我似乎无法让它工作。所以...

1) 将结构指针放入映射的正确方法是什么?

2) 将结构放在 class 中是个好主意吗?

3) 我是 C++ 的新手,有更好的 STL 或方法吗?

This clip of code is located in an .hpp file

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。它给我的错误是:

expected a '>' where *func is.

谢谢大家,我已经弄明白了。

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

前向声明错误。