ber*_*ter 1 c++ struct arguments
我有一个根据输入参数计算结构的函数。通过传递所需的变量作为参数,是否可以编写一个仅返回所计算结构的某个变量的函数?问题在于必须在函数内部创建并计算结构,所以我只知道结构成员的将来变量名。
本质上,我想要用一个变量替换以下硬编码的“-> member1”部分,该变量作为主“ DoSomethingSpecific”函数的参数。
double DoSomethingSpecific()
{
struct *s = CalculateStruct();
DoSomethingElse(s->member1);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我基于一个答案创建了一个最小的示例,该示例现在可以正常工作,解决了将结构成员作为变量传递给函数而不创建结构本身的实质性问题。但是,在这种情况下,必须先知道数据类型(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;
}
Run Code Online (Sandbox Code Playgroud)
您可以传递一个指向数据成员的指针:
double DoSomethingSpecific(double Struct::* field)
{
Struct *s = CalculateStruct();
DoSomethingElse(s->*field);
}
Run Code Online (Sandbox Code Playgroud)
然后调用它:
DoSomethingSpecific(&Struct::member1);
Run Code Online (Sandbox Code Playgroud)
编辑,基于您编辑的问题的修复程序:
int GetVariable(int MyStruct::* field)
{
MyStruct *_myStruct = new MyStruct();
_myStruct->a = 1;
_myStruct->b = 2;
return _myStruct->*field;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |