簡體   English   中英

實例化 object 並使用 c++ 宏將其名稱傳遞給構造函數

[英]Instantiate object and pass its name to constructor using c++ macro

讓我們說

Class A{
   A(string name){
       ....
   }
}

所以當 object 創建時:

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

在我的情況下,由於 object 名稱很長,我正在尋找宏來將該代碼簡化為:

CreateA(objectNumber325)

這里有一些討論如何將變量名傳遞給function 但這並不完全相同,因為我想創建 object 並將其名稱傳遞給構造函數。

#include <string>
#include <iostream>

#define CreateA(name) \
        A* name = new A(#name)

// With type
#define CREATE_WITH_TYPE(type, name) \
        type* name = new type(#name)

// With name decoration
#define CREATE_WITH_DECO(type, name) \
        type* my_##name = new type(#name)

class A {
public:
   A(std::string name){
       std::cout << name << " created.\n";
   }
};

int main() {
    // example
    CreateA(objectNumber325);
    CREATE_WITH_TYPE(A, objectNumber324);
    CREATE_WITH_DECO(std::string, a_string);
    delete objectNumber324;
    delete objectNumber325;
    delete my_a_string;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM