作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将我的对象名称保存为字符串。我可以用几行代码解释一下。
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
class Example
{
public:
string object_name;
//code...
};
int main()
{
Example object;
cout<<object.object_name<<endl; //In this case the output should be "object", how to achieve this ?
return 0;
}
最佳答案
无法从对象内部访问变量名,因为它仅存在于源代码级别。你能做的最好的事情就是向构造函数提供对象的名称:Example object("object")
,你甚至可以将它包装在宏中以避免重复:
#define CREATE_OBJECT(TYPE, NAME) TYPE NAME( #NAME )
CREATE_OBJECT(Example, object);
您应该因复制/移动对象而异,因为它会保留可能与复制名称无关的名称。您将不得不删除复制/移动构造函数,从而大大降低对象的实用性,并定义新的构造函数,这些构造函数采用现有对象和新名称并为其创建 COPY_OBJECT
宏。
即便如此,引用还是有问题...
TL;DR:通常不值得。
关于c++ - 如何将对象名称保存为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36766830/
我是一名优秀的程序员,十分优秀!