我可以在声明结构后将成员变量添加到结构中吗?
Can I add member variables to a structure, after i have declared it?
我可以在声明结构后向结构中添加成员变量吗?
例如:
struct address
{
char name[50];
char street[100];
};
我可以动态地(通过代码)向结构体添加另一个成员变量吗?使用 address.addMember(pinCode); 如果存在这样的东西!
struct address
{
char name[50];
char street[100];
int pinCode;
};
"Can I add member variables to a structure, after i have declared it?"
没有。这在 C++ 中是不可能的。
你问的是不可能的,在另一个答案中已经提到了。
然而,根据您的需要,解决它的一种方法是定义另一个 class 继承自您已经定义的那个,您可以在其中添加其他成员 (variables/functions)。
struct address
{
char name[50];
char street[100];
};
struct addressForBurglars : address
{
int PinCode;
};
你努力实现的目标不可能这么直白,但也不是不可能!
一种方法是通过继承由新成员扩展 address
。
struct address
{
char name[50];
char street[100];
};
struct pin_address : public address
{
int pinCode;
};
其他方法是实现某种 std::variant
- std::map
结构,它允许您动态地 add/remove members.
#include <variant>
#include <map>
using Object = std::variant<int,double,std::string>;
using Members = std::map<std::string,Object>;
struct address
{
Members m_members;
address()
{
m_members.emplace("name", Object{});
m_members.emplace("street", Object{});
m_members.emplace("pinCode", Object{});
}
}
好吧,首先要做的是。您的核心问题的答案是 'No' in C++。
但是,撇开技术细节不谈,无论在编程范式中是否可行,请考虑是否需要这样的需求,您可能会解决数据结构选择的内在问题。依我拙见,这里需要更多关注。
关于设计的一些想法:
- 如果您以后需要更多字段,您可以声明所有这些字段并补充您 need/have 的字段,并在大致相同的位置进行检查。
- 如果您动态需要向数据添加更多字段,map 是您可能会使用的数据结构。
我可以在声明结构后向结构中添加成员变量吗? 例如:
struct address
{
char name[50];
char street[100];
};
我可以动态地(通过代码)向结构体添加另一个成员变量吗?使用 address.addMember(pinCode); 如果存在这样的东西!
struct address
{
char name[50];
char street[100];
int pinCode;
};
"Can I add member variables to a structure, after i have declared it?"
没有。这在 C++ 中是不可能的。
你问的是不可能的,在另一个答案中已经提到了。
然而,根据您的需要,解决它的一种方法是定义另一个 class 继承自您已经定义的那个,您可以在其中添加其他成员 (variables/functions)。
struct address
{
char name[50];
char street[100];
};
struct addressForBurglars : address
{
int PinCode;
};
你努力实现的目标不可能这么直白,但也不是不可能!
一种方法是通过继承由新成员扩展 address
。
struct address
{
char name[50];
char street[100];
};
struct pin_address : public address
{
int pinCode;
};
其他方法是实现某种 std::variant
- std::map
结构,它允许您动态地 add/remove members.
#include <variant>
#include <map>
using Object = std::variant<int,double,std::string>;
using Members = std::map<std::string,Object>;
struct address
{
Members m_members;
address()
{
m_members.emplace("name", Object{});
m_members.emplace("street", Object{});
m_members.emplace("pinCode", Object{});
}
}
好吧,首先要做的是。您的核心问题的答案是 'No' in C++。
但是,撇开技术细节不谈,无论在编程范式中是否可行,请考虑是否需要这样的需求,您可能会解决数据结构选择的内在问题。依我拙见,这里需要更多关注。
关于设计的一些想法:
- 如果您以后需要更多字段,您可以声明所有这些字段并补充您 need/have 的字段,并在大致相同的位置进行检查。
- 如果您动态需要向数据添加更多字段,map 是您可能会使用的数据结构。