You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C++宏实现实例化对象时自动将变量名传入构造函数

C++ 变量名自动传入构造函数的宏实现方案

你可以直接使用C/C++预处理器的**字符串化运算符#**实现需求,该运算符的作用是将宏的输入参数转换为对应的字符串字面量,刚好匹配你需要把变量名作为字符串传入构造函数的场景。

宏定义代码

#define CreateA(varName) A* varName = new A(#varName)

效果说明

当你书写CreateA(objectNumber325);时,预处理器会自动将代码展开为:

A* objectNumber325 = new A("objectNumber325");

和你原本手动书写的实例化代码完全等价。

注意事项

  • 你当前给出的类A的构造函数默认是private权限,实际使用时需要将构造函数声明为public,否则无法在类外部完成实例化:
    class A {
    public: // 新增public访问修饰符
       A(string name) {
           //....
       }
    };
    
  • 如果需要适配其他实例化场景,可以自行调整宏的定义:
    • 栈上实例化非指针对象版本:#define CreateAStack(varName) A varName(#varName)
    • 智能指针版本(C++11及以上):#define CreateAUnique(varName) std::unique_ptr<A> varName = std::make_unique<A>(#varName)

内容的提问来源于stack exchange,提问作者Aryan Firouzian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:04