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

时间:2019-05-03 02:08:44

标签: c++ pointers stdmap

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

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

1)将struct指针放置到映射中的正确方法是什么?

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

  

期望* func为'>'。

1 个答案:

答案 0 :(得分:0)

谢谢大家,我能够弄清楚。

q

这是一个前向声明错误。