【问题标题】:Can I add data members/variables to a struct from outside its definition in C++?我可以从 C++ 定义之外的结构中添加数据成员/变量吗?
【发布时间】:2020-10-25 08:52:12
【问题描述】:

在 C++ 中已经定义了一个结构。我需要添加更多数据成员/变量作为该类对象的属性。可以做到吗?如果是,那么如何?

【问题讨论】:

  • 为什么不能直接改变结构?
  • 如果您需要对象在运行时是动态的,您可以添加一个std::map<std::string, std::variant<...>> 成员。
  • 我正在为原始结构的代码不可用的编码平台上的问题编写代码。 @RetiredNinja
  • 这听起来像是 XY 问题。你想做什么?提出的解决方案是向结构添加成员是什么问题?
  • “我需要添加更多的数据成员/变量作为该类的对象属性。可以吗?” 不,您不能更改结构/类。但是你用"inheritance"标记了这个问题,当然你可以派生一个类,改变派生类。

标签: c++ class oop inheritance struct


【解决方案1】:

你能做什么:

class
non_writable
{
        int private_member;
        int private_function (int, int);
    protected:
        char protected_member;
        char protected_function (char, char);
    public:
        double public_member;
        double public_function (double, double);
};

class
my_class : public non_writable
{
    public:
        double introduced_variable;
        double introduced_function (double, double);
}

这种方法的缺点是私有成员(即private_variableprivate_function)不会被继承到my_class

【讨论】:

  • 它们将被继承,只是从my_class看不到它们
猜你喜欢
  • 2020-05-09
  • 2022-06-15
  • 2014-08-03
  • 2021-10-15
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多