【发布时间】:2015-12-30 16:17:49
【问题描述】:
假设我有以下类定义:
class my_named_int {
public:
int value;
const string name;
my_named_int(int _value, /*...Does Something Go Here...?*/);
};
我想要的是,如果我编写以下代码:
int main() {
my_named_int my_name(5);
std::cout << my_name.name << ":" << my_name.value << std::endl;
}
我希望输出是:
my_name:5
显然,解决此问题的最简单方法是编写如下所示的代码:
class my_named_int {
public:
int value;
const string name;
my_named_int(int _value, const string & _name);
};
int main() {
my_named_int my_name(5, "my_name");
std::cout << my_name.name << ":" << my_name.value << std::endl;
}
当然,这增加了我的代码的重复性。有没有办法在 C++ 中做到这一点而无需“双重写入”变量名,如果是,我将如何处理?
【问题讨论】:
-
你为什么要这样做?
-
使用宏? C++ 中的编译代码并不真正知道事物的名称[至少不是以代码可以理解的方式 - 调试符号不算数]
-
不可能(但也许一些 C++ 预处理器技巧可能会有所帮助)
-
不确定如何做到这一点是 c++ 但我在这里写了一个类似的问题:stackoverflow.com/questions/32148060/get-a-parameters-old-name for c#。如果在 c# 中是可能的,我敢打赌在 c++ 中是可能的
-
您希望动态分配的
my_named_int使用什么名称?
标签: c++