我可以在声明结构后将成员变量添加到结构中吗?

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++。

但是,撇开技术细节不谈,无论在编程范式中是否可行,请考虑是否需要这样的需求,您可能会解决数据结构选择的内在问题。依我拙见,这里需要更多关注。

关于设计的一些想法:

  1. 如果您以后需要更多字段,您可以声明所有这些字段并补充您 need/have 的字段,并在大致相同的位置进行检查。
  2. 如果您动态需要向数据添加更多字段,map 是您可能会使用的数据结构。