如何在实例化时打印类类型变量的名称?

Pen*_*ala 3 c++

我有一个名为 Student 的类,我正在主程序中创建一个实例 Alex。创建实例 Alex 时,是否可以打印“正在创建 Alex”。如果变量名是“Joe”,它应该打印“Joe is being created”。

这是我的类定义

class Student
{
    public:
    int rollNo;
    string address;

    Student(int rollNo, string address)
    {
        this.rollNo = rollNo;
        this.address = address;
    }
    //setter , getter functions.
};
Run Code Online (Sandbox Code Playgroud)

// 在主程序中

Student Alex;
Student Joe;
Run Code Online (Sandbox Code Playgroud)

注意1:是的,我们可以在 Student 类中使用变量“name”并在实例化它时传递名称 Alex/Joe 并根据需要在构造函数中打印。但这不是我的情况。我纯粹不想传名字

Vit*_*meo 5

没有宏就无法自动执行此操作,因为 C++ 不支持反射。一种可能性是在您的呼叫站点上使用宏:

#define CREATE_VARIABLE(type, name) \
    ::std::cout << "Creating " #name " of type " #type << '\n'; \
    type name
Run Code Online (Sandbox Code Playgroud)

用于:

CREATE_VARIABLE(Student, Alex);
CREATE_VARIABLE(Student, Joe){joeRollNo, joeAddress};
Run Code Online (Sandbox Code Playgroud)