C++将结构成员作为参数传递
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时,你可以使用指针初始化成员。
相关文章:
- 使用指向成员的指针将成员函数作为参数传递
- 将成员函数指针作为参数传递给模板方法
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 移动类的成员作为常量引用参数传递
- C++将指向成员的指针作为模板参数传递
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 如何将成员函数作为参数传递?
- 使用 C++11 将指向成员函数的指针作为参数传递
- 是否可以将结构的成员变量作为参数传递
- 将参数传递给构造函数和成员函数时移动或复制
- 如何将已实现的虚拟成员函数作为参数传递
- 将派生类构造函数参数传递给受保护的成员
- 如何通过引用将参数传递给模板类的成员函数?
- 将参数传递给成员函数,就像使用 std::cout 一样
- 通过作为类的公共成员的两个函数将函数作为参数传递
- 使用可变模板参数传递成员函数指针是不明确的
- C++11通过推导的类型参数传递成员函数调用