簡體   English   中英

如何比較類的數據成員的名稱而不是它們的值

[英]how to compare name of data member of class not their value

如何將數據成員的名稱(不是它們的值)作為campare,從函數中作為參數發送。 示例代碼如下。

class Example
{
  private:
   std::string value;

  public:
   void Set(const std:: string& MemberName)
   {
      if(MemeberName == value)
       {
         std::cout<<"Same Member Name";
       }
      else
      {
         std::cout<<"Not same Member name";
      }
   }
 ...
}

我這樣做但沒有得到所需的結果。 謝謝你的幫助

它應該是

if(MemeberName == "value")
{
    std::cout<<"Same Member Name";
}
else
{
    std::cout<<"Not same Member name";
}

如果您想知道它是否是完全相同的對象,您可以使用存儲它的地址:

#include <iostream>
using namespace std;

std::string g;

void foo(const std::string& arg)
{
    if (&arg == &g)                                        // compares addresses
        std::cout << "same object" << std::endl;
    if (arg == g)                                          // compares values 
        std::cout << "same value" << std::endl;
}

int main() {
    g = "abc";
    foo(g);
    return 0;
}

請注意,當您通過引用傳遞時,實際上您正在使用相同的對象(沒有創建副本),因此當您使用&運算符時,您可以檢索原始對象的地址。 此示例打印same objectsame value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM