gpt4 book ai didi

c++ - 获取带有 typeid(*this).name 的静态 int 变量类名用于其自己的定义 - C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:28 26 4
gpt4 key购买 nike

当我需要在其中一个方法中获取类名时,我只需调用:

typeid(*this).name()

(然后我将结果拆分为标记并获取类名)

现在我必须定义一个静态成员变量并需要获取它的类名。但我没有方法!所以,我不能使用 (*this)。

最初,我以为我可以做这样的事情:

#define INIT_STAT_VAR
const char * cname = typeid(*this).name;
int cname##::var = 1;

知道如何获取静态成员变量定义的类名吗?(不,我不能直接为定义写类的名称;])

谢谢!

最佳答案

我不认为直接可以做你想做的事——因为静态方法没有得到一个对象指针,它不能调用 typeid。您可以在静态方法中创建一个临时对象并在 typeid 上使用它,但这与将其作为静态方法相悖。

另一个解决方案(如果你能保证至少定义了一个类的实例)是创建一个静态成员变量,你在构造函数中初始化一次,然后从静态方法访问。这有点 hacky,但有效:

#include <typeinfo>
#include <string>

class Foo {
public:
Foo() {
if (name == NULL) {
const std::type_info& id = typeid(*this);
name = new std::string(id.name());
}
// Normal object creation.
}

static std::string getName() { return *name; }

private:
static std::string* name;
};

std::string* Foo::name = NULL;

关于c++ - 获取带有 typeid(*this).name 的静态 int 变量类名用于其自己的定义 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1149594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com