繁体   English   中英

C ++将struct成员作为参数传递

[英]C++ Pass struct member as argument

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

本质上,我想要用一个变量替换以下硬编码的“-> 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;
}

如果您知道其类型,则可以将指针传递给它。 构造Struct时,可以使用指针初始化成员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM