如何使用C ++将成员的名称从结构作为参数传递给函数?

乔恩

我已经用尽了耐心,试图找到这个特定的问题。

我试图将特定成员的名称从结构输入到函数中。

我首先想到的是这是不可能的,因为函数的参数需要是在RAM中声明和定义的变量。然而,计算机能够根据给定成员名称的每个实例来解释“成员”的位置。

以下是一个任意程序,其中我创建了一个结构数组,该程序将针对数组中的每个实例如何输入结构中每个成员的所有数据。然后它将尝试显示数组中特定成员的所有内容。这是不完整的,因为我不知道如何使其工作。

#include theUsual

// global variables
const int SIZE = 10;

// structures
struct structureExample 
{
   dataType member1;
   dataType member2;
   ...
};

// functions 
void inputData(structureExample s[], int size);
void displayMember( dataType member, structureExample s[], int size);

int main
{
   structureExample sE[SIZE];
   dataType memberName = member1 // member1 from the declared struct structureExample

   inputData(sE,SIZE);

   displayMember(memberName, sE, SIZE);

   system("PAUSE");
   return 0;
}

// inputs all the data for all members in an array of structure examples
void inputData(structureExample s[], int size)
{
   ...
} 

// display's all of the content of a particular member from an array    
void displayMember( dataType member, structureExample s[], int size)
{
   for (int i = 0; i<size; i++)
   {
      cout << s[i].member << endl;
   }
}

因此,从structureExample进入displayMember的任何成员名称都将被给出,它将为数组中的每个单元显示该成员的所有内容。

我对此有很多疑问,但最大的两个是,这还能行吗?如果是这样,我该如何进行这项工作?例子将不胜感激。

提前致谢!

贾罗德42

看来您要在成员上使用指针:

struct structureExample 
{
   int member1;
   float member2;
};

template<typename M>
void displayMember(M structureExample::*member, structureExample s[], int size)
{
   for (int i = 0; i < size; i++)
   {
      std::cout << s[i].*member << std::endl;
   }
}

int main()
{
    structureExample sE[SIZE];
    auto member = &structureExample::member1;

    inputData(sE,SIZE);

    displayMember(member, sE, SIZE);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将成员函数作为参数传递给其他成员函数(C ++ 11 <function>)

C ++ / Boost:将成员函数作为参数传递给boost :: bind

使用指向成员的指针将成员函数作为参数传递

如何正确地将成员函数作为参数传递

如何将成员函数作为参数传递?(PortAudio)

如何将成员函数作为回调参数传递给需要`typedef-ed`自由函数指针的函数?

如何访问作为指向指针参数的指针传递给函数的结构成员?

将结构成员作为参数传递给C中的函数

C ++如何将成员函数传递给函子参数?

如何将成员函数作为参数传递并在派生对象上执行方法列表

C ++我可以将成员函数的选择作为参数传递吗?

将成员函数指针传递给C样式函数

c结构将自身作为参数传递给指针函数

C ++ 11-将成员函数传递给线程会给出:没有重载函数需要2个参数

将成员函数作为函数变量传递时,无效使用非静态成员函数C ++

将成员函数作为参数传递给优化器(将成员函数传递给函数)

将成员函数作为参数传递给函数模板

将成员函数作为参数传递给构造函数

如何使用绑定将成员函数作为函数指针传递?

作为参数传递给函数时如何修改全局结构(C ++)?

C ++如何将成员函数指针传递给另一个类?

C ++成员函数模板将成员函数指针作为模板参数

将结构成员名称传递给 C++ 中的函数

将成员函数指针作为参数传递给模板方法

如何将成员函数指针传递给采用常规函数指针的函数?

如何将成员函数传递给需要函数指针的函数?

将不同的类作为参数传递给 C++ 中的成员函数

如何将非静态成员函数作为模板参数传递给另一个成员函数?

如何将带有args作为参数的成员函数传递给另一个成员函数?