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

Passing a structure member name to a function in C++

这是一个不起作用的基本代码。

struct s_date {
   int day;
   int month;
   int year;
} date;

void showMonth(date.month);

int main()
{

cout << "Enter a number";
cin >> date.month;

showMonth(date.month);

return 0;
}

void showMonth(date.month) {
switch (date.month) {
    case 1:
    cout << "January";
    break;

    //...
    }
}

如何将特定的结构成员名称(例如 date.month)传递给函数,如此处所示?

C++ 不像 Java、C#、Python、Ruby 等那样具有反射性。语言。因此,您必须自己提供字符串(例如 "date.month"),但是否与实际结构定义同步取决于您。

您的 showMonth() 函数结构错误。它需要更像这样:

struct s_date {
   int day;
   int month;
   int year;
} date;

void showMonth(int month);

int main()
{
    cout << "Enter a number";
    cin >> date.month;

    showMonth(date.month);

    return 0;
}

void showMonth(int month) {
    switch (month) {
        case 1:
            cout << "January";
            break;
        //...
    }
}