C++ 有没有一种简单的方法在C++;?

C++ 有没有一种简单的方法在C++;?,c++,C++,我想实现一个函数,它可以根据struct('Data')的名称打印出一个成员变量(例如,'aa')的值。 我尝试按如下方式使用宏定义,但失败了。 有没有一个简单的方法来实现它 #include <string> #include <iostream> using namespace std; struct Data { int aa; int bb; int cc; Data(): aa(1),bb(2),cc(3) {}; }; #de

我想实现一个函数,它可以根据struct('Data')的名称打印出一个成员变量(例如,'aa')的值。 我尝试按如下方式使用宏定义,但失败了。 有没有一个简单的方法来实现它

#include <string>
#include <iostream>
using namespace std;
struct Data
{
    int aa;
    int bb;
    int cc;
    Data(): aa(1),bb(2),cc(3) {};
};

#define Param(a,b) a.##b

void Process(Data& data, const string& name)
{
    cout << Param(data, name) << endl;
}

void main()
{
    Data data;

    Process(data, "aa");//I want print the value of Data.aa
    Process(data, "bb");//I want print the value of Data.bb
    Process(data, "cc");//I want print the value of Data.cc
}
#包括
#包括
使用名称空间std;
结构数据
{
int aa;
int-bb;
int cc;
Data():aa(1),bb(2),cc(3){};
};
#定义参数(a,b)a.##b
无效流程(数据和数据、常量字符串和名称)
{

cout您的原始代码示例对我来说毫无意义,因为如果您调用
Param(name)
,那么编译器必须知道它必须使用
数据的哪个实例来确定您想要获得的成员变量的值(但我既不是使用宏的专家,也不太喜欢它们)。

我尝试使用以下方法解决您的问题:

struct Data
{
    int aa;
};

#define GetMemberValue(d, n) d.##n

int main()
{
    Data d;

    d.aa = 3;

    int i = GetMemberValue(d, aa);
}
在这种情况下,至少这种方法会返回正确的结果。


另外一件事是,你说你不能直接调用成员变量,即“代码>数据。AA/CODE >,所以你可能会使用宏来处理同一个问题。只是因为我不知道你使用的原始代码,所以猜一猜。

< P>这是C++中不可能的。< /P> 这种用法通常出现在脚本语言中


在C++中,变量名是在编译时构造的。

可以在结构中声明函数,就像在类中所做的那样,调用参数为“代码>数据”的过程函数。AA/CODE >实际情况比这更复杂,不能直接调用。不,C++没有提供一种简单的实现方法。据我所知,它根本无法实现这一点。是的,我找到了!我已经更改了它。