【发布时间】: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++ 中的行为。