如何为不同的类声明相同的对象名称?
Posted
技术标签:
【中文标题】如何为不同的类声明相同的对象名称?【英文标题】:How can I declare same object name for different class? 【发布时间】:2020-11-15 12:56:15 【问题描述】:通常这是我的代码
#include <iostream>
using namespace std;
class On
public:
int value;
;
class Off
public:
int value;
;
int main()
On push;
push.value = 1;
cout << push.value << endl;
return 0;
这里添加了两个名为 On、Off 的类。我想为两个类创建相同的对象名称,如下所示。我知道代码是错误的,但这是我所期望的示例。
// Full source shown above code
int main()
On push; // 'push' object for the class -> On
push.value = 1;
cout << push.value << endl;
Off push; // 'push' object for the class -> Off
push.value = 0;
cout << push.value << endl;
// Here's the problem. How can I can define it's coming from an specific/defferent object?
return 0;
【问题讨论】:
可能是The XY Problem? 为什么要这样做?你将无法分辨push
和push
之间的区别,那么为什么要让它们成为两个对象呢?
名称阴影几乎总是一个错误巢穴,不推荐。
谢谢,@ThomasSablik 你的代码对我有用。实际上,没有必要。我只是在想,如果我在其他任何地方都需要这样,那么我应该如何编写这段代码。这就是为什么问这个问题。感谢大家提供建议。 :)
【参考方案1】:
您可以使用范围:
#include <iostream>
using namespace std;
class On
public:
int value;
;
class Off
public:
int value;
;
int main()
On push; // 'push' object for the class -> On
push.value = 1;
cout << push.value << endl;
Off push; // 'push' object for the class -> Off
push.value = 0;
cout << push.value << endl;
// Here's the problem. How can I can define it's coming from an specific/defferent object?
return 0;
【讨论】:
【参考方案2】:将每一个放在不同的命名空间中:
namespace N1 On push;
namespace N2 On push;
用法:
N1::push.value
N2::push.value
【讨论】:
谢谢@ouchane,您的代码也有效。顺便说一句,在您的代码命名空间中 N2 应该是 Off push; 是的,你可以使用任何你想要的类型:)以上是关于如何为不同的类声明相同的对象名称?的主要内容,如果未能解决你的问题,请参考以下文章