如何比较类的数据成员的名称而不是它们的值

时间:2013-11-14 14:19:52

标签: c++ string

如何保存数据成员的名称(不是它们的值),作为参数从函数发送。 示例代码如下。

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";
      }
   }
 ...
}

我这样做但没有得到所需的结果。 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

应该是

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

答案 1 :(得分:1)

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

#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