C++ 将结构成员作为参数传递

标签 c++ struct arguments

我有一个根据输入参数计算结构的函数。 是否可以编写一个函数,通过将所需变量作为参数传递来仅返回计算结构的某个变量? 问题是结构必须在函数内部创建和计算,所以我只知道结构成员的 future 变量名。

本质上,我想要的是用一个变量替换以下硬编码的“->member1”部分,我将这个变量作为主要“DoSomethingSpecific”函数的参数。

double DoSomethingSpecific()
{
  struct *s = CalculateStruct();
  DoSomethingElse(s->member1);
}

编辑: 我根据现在有效的答案创建了一个最小示例,并解决了将结构成员作为变量传递给函数而不创建结构本身的实质性问题。但是,在这种情况下必须事先知道数据类型 (int)(否则模板会在需要时提供帮助)

#include <iostream>
using namespace std;

struct MyStruct
{
   int a;
   int b;
};

int GetVariable(int MyStruct::* field)
{
   MyStruct *_myStruct = new MyStruct();
   _myStruct ->a = 1;
   _myStruct ->b = 2;

   return _myStruct->*field;
}

int main( )
{
   int my_variable = GetVariable(&MyStruct::a); 
   return 0;   
}  

最佳答案

您可以传入一个指向数据成员的指针:

double DoSomethingSpecific(double Struct::* field)
{
  Struct *s = CalculateStruct();
  DoSomethingElse(s->*field);
}

然后调用它:

DoSomethingSpecific(&Struct::member1);

编辑,根据您编辑的问题进行修复:

int GetVariable(int MyStruct::* field)
{
    MyStruct *_myStruct = new MyStruct();
    _myStruct->a = 1;
    _myStruct->b = 2;

    return _myStruct->*field;
}

关于C++ 将结构成员作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465044/

相关文章:

c++ - 二叉搜索树中序遍历递归函数不能正常工作

c++ - 如何在类中全部内嵌数据结构模板(同一 .h 文件)

c - 指向作为值传递的参数的指针?

function - 发送中缀运算符作为参数时 F# 类型不匹配

c++ - 拆分一个整数并找到最大和 C++

c++ - 在 find_if 中使用仿函数

c++ - 结构或类中的数组初始化

java - java变量参数列表中至少需要一个元素

c++ - 是否应该将整数值传递给浮点用户定义的文字?

c++ - 如何使 printf 以与 NSLog 相同的方式打印字符缓冲区?