【问题标题】:C++ rename class member any ideas?C ++重命名类成员有什么想法吗?
【发布时间】:2013-04-25 07:38:34
【问题描述】:

所以这是我的问题。可以说我们有一个可以完成所有工作的类,但是当我使用它时,我想有不同的名称。这是我的意思的例子:

class A
{
public:
    int m_Value;

    A();
    ~A();
    void Func1();
    void Func2();
    // ... so on
};

现在创建该类的对象并使用它。

void main()
{
    A obj1;
    A obj2;

    obj1.m_NewName1 = 5; // obj1.m_Value has to be changed to obj1.m_NewName1
    obj2.m_NewName2 = 1; //
}

这样可以吗?

我可以这样做:

class C : public A
{
public:
    int &newName1;
    C() : newName1 (A::m_Value)
    {
    }
    //Add some copy consructor and assignment operator
};

现在考虑重命名 100 个类。不太方便

【问题讨论】:

  • 为什么?我想不出一个可以合理解决的问题。
  • 其他代码如何使用它?您必须跟踪哪个对象使用了哪个名称。最好把它封装起来,给它一个统一的接口,以避免在实现发生变化时不得不改变。
  • 类中的公共变量(与 POD 相对)通常是个坏主意,因为它破坏了封装。考虑使用私有变量和 getter/setter。
  • 在 A 类中声明了用于读取和写入一些数据的方法,而 B 类中包含了该类的对象,这些对象具有不同的名称,具有不同的含义。
  • 我想,他想要一个 .Net 属性,类似于 C++ 中的行为。

标签: c++ class rename member


【解决方案1】:

你不能改变类中定义的变量名。!!!

【讨论】:

    【解决方案2】:

    这不能在客户端代码中完成。如果你想通过名称来表示不同的值,方法是使用 std::map 将名称映射到值。

    【讨论】:

      【解决方案3】:

      以下内容对您有用吗?

      class A
      {
      public:
          int a;
          int& ref_a;
          A(int i): a(i),ref_a(a)
          {`enter code here`
          }
      
          A(): ref_a(a)
          {
          }
      
      };
      
      int main()
      {
          A objA(100);
          printf("%d\n",objA.a);
      
         objA.ref_a = 10;
         printf("%d\n",objA.a);
      
          return 0;
      }
      

      【讨论】:

      • 没有。 A 类不应更改和添加引用和成员。可能可以使用 MACRO,但老实说我不知道​​该怎么做。
      • 能否请您告诉我们需要它的实际场景?那么我们也许可以提供帮助。
      猜你喜欢
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2011-03-21
      • 2016-03-15
      • 1970-01-01
      • 2011-02-22
      相关资源
      最近更新 更多