C++ 在运行时通过名称访问类成员变量

C++ 在运行时通过名称访问类成员变量,c++,reflection,C++,Reflection,更不可能,但这真的是问题吗: 是否可以访问类的成员变量,其中变量的名称存储在字符串中 class Test { public: int test = 0; } string name = "test"; // let's assume we know test is an int. 是否有可能使用字符串获取test的值 不允许有一点作弊: enum vartype { INT, .. } 不强制类在std::map中注册其所有变量 欢迎使用所有其他技巧 谢谢 没有 要做到这一点,您需要在成员

更不可能,但这真的是问题吗:

是否可以访问类的成员变量,其中变量的名称存储在字符串中

class Test
{
public:
int test = 0;
}
string name = "test"; // let's assume we know test is an int.
是否有可能使用字符串获取test的值

不允许有一点作弊:

enum vartype {
INT,
..
}
不强制类在
std::map
中注册其所有变量

欢迎使用所有其他技巧

谢谢

没有

要做到这一点,您需要在成员变量和要访问它们的字符串名称之间提供一些映射。


要做到这一点,您需要在成员变量和要访问它们的字符串名称之间提供一些映射。

在真正丑陋的kluges领域中,您可以使用调试信息构建程序,并让它使用调试信息以调试器相同的方式查找变量的位置。但除此之外,你运气不好。C++不做反射。

< P>在真正丑陋的KLUGES领域,可以用调试信息构建程序,并用它来找到变量的位置,就像调试器一样。但除此之外,你运气不好。C++没有做反射。

< P><强>为什么它不能在C++中使用,而另一种选择是:< /强>

但在MATLAB中这是可能的。。。 作为一个非常简单的示例,如果要进行矩阵更新,如下所示:

M1=1;
M2=2;
M3=3;
您希望可以更改变量名,以便使用for循环,然后也可以这样做:

for i=1:3
eval(['M' num2str(i) '=' num2str(i)]);
end

我过去常在Actionscript中这样做。很高兴发现它在MATLAB中也是可用的

< P><强>为什么它在C++中不可用,还有一个替代方案:< /强>

但在MATLAB中这是可能的。。。 作为一个非常简单的示例,如果要进行矩阵更新,如下所示:

M1=1;
M2=2;
M3=3;
您希望可以更改变量名,以便使用for循环,然后也可以这样做:

for i=1:3
eval(['M' num2str(i) '=' num2str(i)]);
end

我过去常在Actionscript中这样做。我很高兴发现它也可以在Matlab中使用

你能解释一下为什么你认为你需要它吗?@ruslik:我不知道。我只是好奇。你能解释一下为什么你认为你需要它吗?@ruslik:我不需要。我只是好奇。我还要补充:变量+函数名根本不存在于最终可执行文件中。我还要补充:变量+函数名根本不存在于最终可执行文件中