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 ++重命名类成员有啥想法吗?的主要内容,如果未能解决你的问题,请参考以下文章