gpt4 book ai didi

c++ - 如何在不使用 MACRO 的情况下访问成员变量

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:47 28 4
gpt4 key购买 nike

我删除了我的旧问题并在此处重新表述了问题。我可以使用模板来实现以下功能吗?

#include <iostream>

using namespace std;

#define FUNC(T1, T2) do {cout<< T1.T2<<endl; } while(0);

struct ST{
double t1;
int t2;
double t3;
};

struct ST2{
int t1;
double h2;
};


int main()
{
ST st;
ST2 st2;
st.t1 = 1.1;
st.t2 = 0;
st.t3 = 3.3;
FUNC(st, t1);
FUNC(st, t2);
FUNC(st, t3);
FUNC(st2, h2);
}

最佳答案

简短回答:不。但是您为什么要这样做? (class variable, member) 符号有什么特别之处?您显然可以编写一个采用 st.t1 而不是 st, t1 的函数 - 为什么要避免这种情况?

长答案:没有用。 t1 在您调用 FUNC(st, t1) 时不在范围内...当前宏将其替换为 st.t1 可以在当前范围内找到。如果你真的真的非常想破解一些东西,你必须放一些t1t2t3h2 等范围内的对象,可以传递给函数并以某种方式编码应该访问哪个字段。让局部 t1 等成为指向成员变量的指针是一个显而易见的选择。不过,这将非常不方便、冗长且容易出错:设置所有这些额外变量只是为了支持这种间接。

关于c++ - 如何在不使用 MACRO 的情况下访问成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268464/

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