可以从类方法中知道对象实例名/变量名吗?例如:
#include <iostream>
using namespace std;
class Foo {
public:
void Print();
};
void Foo::Print() {
// what should be ????????? below ?
// cout << "Instance name = " << ?????????;
}
int main() {
Foo a, b;
a.Print();
b.Print();
return 0;
}
发布于 2009-11-25 18:16:10
不是使用语言本身,但您可以编写类似这样的代码:
#include <iostream>
#include <string>
class Foo
{
public:
Foo(const std::string& name) { m_name = name;}
void Print() { std::cout << "Instance name = " << m_name << std::endl; }
private:
std::string m_name;
};
int main()
{
Foo a("a");
Foo b("b");
a.Print();
b.Print();
return 0;
}
发布于 2009-11-25 17:53:09
不是的。变量名是给程序员的,编译器看到的是地址。
其他提供关于其程序的元数据/反射的语言可能会提供此功能,C++不是这些语言之一。
发布于 2009-11-25 17:54:59
编译后的代码中不存在变量名。
但是,您可以使用一些#define
在预处理过程中获取名称,并在编译之前填充名称。
如下所示:
#define SHOW(a) std::cout << #a << ": " << (a) << std::endl
// ...
int i = 2;
SHOW (i);
https://stackoverflow.com/questions/1795816
复制相似问题