簡體   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