C ++重命名类成员有啥想法吗?

Posted

技术标签:

【中文标题】C ++重命名类成员有啥想法吗?【英文标题】: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++ 中的行为。 【参考方案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,但老实说我不知道​​该怎么做。 能否请您告诉我们需要它的实际场景?那么我们也许可以提供帮助。

以上是关于C ++重命名类成员有啥想法吗?的主要内容,如果未能解决你的问题,请参考以下文章

继承

C++进阶----继承

MVC - 除了设置/获取成员之外,模型类中应该都有哪些方法?

如何初始化类的static成员变量?

在类声明中处理指向成员函数的指针

类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别