C++ 指向结构成员?

C++ 指向结构成员?,c++,pointers,struct,typedef,C++,Pointers,Struct,Typedef,我有以下类型定义的结构: 我有一个线程,它用传感器的数据填充这个结构,并使用它的一个值: while(true) { tstrMapMetadata * pstrMapMetadata = something(); if(pstrMapMetadata->u8Byte1 == SOMETHING) //<---- this line { //Do something special } } 但是我会一直做同样的比较 有没有办法指出其中一个成员是这样称

我有以下类型定义的结构:

我有一个线程,它用传感器的数据填充这个结构,并使用它的一个值:

while(true)
{
  tstrMapMetadata * pstrMapMetadata = something();
  
  if(pstrMapMetadata->u8Byte1 == SOMETHING) //<---- this line
  {
    //Do something special 
  }
}
但是我会一直做同样的比较

有没有办法指出其中一个成员是这样称呼的?声明之前的结构的

像这样的代码当然不起作用,但给出了我要寻找的东西的想法:

uint8_t * coolPointer;
if(condition) 
{
  coolPointer = (someOperation)tstrMapMetadata(u8Byte1);
}
else
{
  coolPointer = (someOperation)tstrMapMetadata(u8Byte3);
}

while(true)
{
  tstrMapMetadata * pstrMapMetadata = something();
  
  if(coolPointer == SOMETHING) //<---- this line
  {
    //Do something special 
  }
}
谢谢

有:

有:


第一种方法有什么问题?@WaisKamal它进行的比较将始终具有相同的结果,我希望在while循环开始之前只进行一次比较。你的意思是u8Byte1和u8Byte3总是具有相同的值吗?@WaisKamal不,我的意思是在循环内不具有相同的值change@Jarod42当然抱歉,我正在编辑第一种方法有什么问题?@WaisKamal它进行的比较将始终具有相同的结果,我希望在while循环开始之前只进行一次比较。你的意思是u8Byte1和u8Byte3始终具有相同的值吗?@WaisKamal否,我的意思是,在循环的情况下没有change@Jarod42当然对不起,我正在编辑那张便条@Ivan:Using auto member=。。。在这里也可以很好地工作……祝贺你,你找到了该语言中最晦涩、使用最少的特性之一。事实上,我来这里是因为我想知道一个合适的用例应该是什么样子。。。在这里也可以很好地工作……祝贺你,你找到了该语言中最晦涩、使用最少的特性之一。事实上,我来这里是因为我想知道一个合适的用例会是什么样子。
if(((condition) ? pstrMapMetadata->u8Byte1 : pstrMapMetadata->u8Byte3) == SOMETHING) //<---- this line
uint8_t * coolPointer;
if(condition) 
{
  coolPointer = (someOperation)tstrMapMetadata(u8Byte1);
}
else
{
  coolPointer = (someOperation)tstrMapMetadata(u8Byte3);
}

while(true)
{
  tstrMapMetadata * pstrMapMetadata = something();
  
  if(coolPointer == SOMETHING) //<---- this line
  {
    //Do something special 
  }
}
uint8_t tstrMapMetadata::*member = condition ?
     &tstrMapMetadata::u8Byte1 :
     &tstrMapMetadata::u8Byte3;

while (true)
{
  tstrMapMetadata* pstrMapMetadata = something();
  
  if (pstrMapMetadata->*member == SOMETHING) // usage with ->*  ( .* for objet )
  {
    //Do something special 
  }
}