我有多个设备,每个设备都有自己的一组功能,每个都有不同的值和不同的变量类型。我正在尝试创建一个数据集,以一种简单的方式存储这些变量,以便在动态添加或删除这些设备时访问它们。
我的想法是创建一个包含设备信息的类,以及一个可用于不同功能的结构。为了轻松访问设备和功能,设备/功能名称将作为键存储在映射中,而指向类/结构实例的指针将作为该键的值存储。对于设备映射,这工作正常。但是,对于函数映射,在类内部,我似乎无法让它工作。所以……
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/