如何将对象名称另存为字符串
how to save an objects name as a string
我想将我的对象名称保存为字符串。请允许我用几行代码来解释一下。
#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
宏。
即便如此,参考文献也存在问题...
DR:通常不值得。
要在C++中获取此功能,您必须自己设置object_name
,并且无需为Example
实例及其object_name
数据成员冗余指定它的唯一方法是使用宏来存储"字符串化"标识符:
#define EXAMPLE(IDN) Example IDN{ #IDN }
EXAMPLE(object);
恕我直言,这很丑陋:人们会将其误认为是运行时函数调用。
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 仅读取文件末尾的最后 3 个字符,并将其另存为 int
- 如何使用regex_replace将子字符串替换为字符串中的另一个子字符串,同时保持整个文本完整?
- C++将 lambda 函数另存为成员变量,而不使用函数指针进行优化
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*
- UnicodeString 将一个子字符串替换为另一个子字符串
- 如何将反转的字符串另存为新字符串?
- 将 OpenCV 帧另存为对象
- Lambda 捕获'this'另存为 std::function
- 提升输入流错误.如何将标准:矢量的动态矢量另存为 XML 文件
- 将字符串另存为浮点数组C++
- 将一个数组到另一个数组的字符替换为字符串
- 将字符数组另存为 JPG C++用于 Windows 应用商店应用
- 将端口另存为静态常量成员
- 将文件名的文件另存为当前时间日期
- 将 txt 文件另存为变量的名称
- 如何将对象名称另存为字符串
- QTableView 输出另存为 .csv 或 .txt
- 如何写入原始像素数据并另存为位图
- 将图像实例另存为 png Magick++