C++ C++;将std::map值设置为结构实例的指针
我有多个设备,每个设备都有自己的函数集,每个都有不同的值和不同的变量类型。我试图创建一个数据集,以一种简单的方式存储这些变量,以便在动态添加或删除这些设备时访问它们 我的想法是创建一个保存设备信息的类,其中包含一个可用于不同功能的结构。为了方便地访问设备和函数,设备/函数名将作为键存储在映射中,指向类/结构实例的指针将作为该键的值存储。对于设备图,这很好。然而,对于函数映射,在类内部,我似乎无法让它工作。所以 1) 将结构指针放入映射的正确方式是什么 2) 在类中放置结构是个好主意吗 < 3)我对C++是相当新的,所以有更好的STL或方法吗? 此代码片段位于.hpp文件中C++ C++;将std::map值设置为结构实例的指针,c++,pointers,stdmap,C++,Pointers,Stdmap,我有多个设备,每个设备都有自己的函数集,每个都有不同的值和不同的变量类型。我试图创建一个数据集,以一种简单的方式存储这些变量,以便在动态添加或删除这些设备时访问它们 我的想法是创建一个保存设备信息的类,其中包含一个可用于不同功能的结构。为了方便地访问设备和函数,设备/函数名将作为键存储在映射中,指向类/结构实例的指针将作为该键的值存储。对于设备图,这很好。然而,对于函数映射,在类内部,我似乎无法让它工作。所以 1) 将结构指针放入映射的正确方式是什么 2) 在类中放置结构是个好主意吗 < 3)我
std::map设备;
类设备{
私人:
//设备信息
std::字符串devName;
尺寸设备;
焦态;
std::映射函数;//---错误
//多功能设置
结构函数{
//功能信息
std::字符串名称;
大小函数ID;
字符类型;
};
公众:
//获取设备和函数值的函数
我在Linux(Ubuntu 19.04)上运行此代码,并使用Visual Studio代码作为IDE。它给我的错误是:
应为“>”,其中*func为
谢谢,伙计们,我终于明白了
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
std::map设备;
类设备{
私人:
//设备信息
std::字符串devName;
尺寸设备;
焦态;
//多功能设置
结构函数{
//功能信息
std::字符串名称;
大小函数ID;
字符类型;
};
//函数Id到函数对象指针的映射
std::map函数;
公众:
//获取设备和函数值的函数
这是一个转发声明错误。谢谢各位,我能找到答案
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
std::map设备;
类设备{
私人:
//设备信息
std::字符串devName;
尺寸设备;
焦态;
//多功能设置
结构函数{
//功能信息
std::字符串名称;
大小函数ID;
字符类型;
};
//函数Id到函数对象指针的映射
std::map函数;
公众:
//获取设备和函数值的函数
这是一个正向声明错误。将
struct funct
的定义移动到函数映射的上方。或者将其放入.h文件中,并在需要的地方包含它……或者正向声明它。看起来设备
是正向声明的,所以这应该以相同的方式工作。模板参数需要是类型。struct func
是一种类型。struct func*
也是一种类型,但是struct func*func
不是一种类型。将struct func
的定义移动到函数的映射上方。或者将其放入.h文件中,并在需要的地方包含它……或者向前声明它。看起来设备
是向前声明的,因此这是应该以同样的方式工作。模板参数必须是类型。struct func
是类型。struct func*
也是类型,但struct func*func
不是类型。