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

标签 c++ pointers stdmap

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

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

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

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

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 Code 作为我的 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

这是一个前向声明错误。

关于C++ 将 std::map 值设置为结构实例的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962424/

相关文章:

改变指针的值但保留地址

c - 声明动态多维指针

c++ - Makefile 问题 - 部分执行两次

c++ - 如何检查 StringStream 变量是否为空/null?

c - 指向 RGB 结构的指针数组始终指向第一个像素

C++:指向 std::map 的指针的奇怪行为

c++ - 是否不可能将 STL 映射与结构一起用作键?

c++ - 有序映射的迭代器有效性

c++ - 为什么我的代码先执行后面的cout?

java - '。类(class)。' java中的错误