1

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

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

我这样做了,但没有得到所需的结果。感谢您的帮助

4

2 回答 2

2

它应该是

if(MemeberName == "value")
{
    std::cout<<"Same Member Name";
}
else
{
    std::cout<<"Not same Member name";
}
于 2013-11-14T17:36:23.597 回答
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

于 2013-11-14T14:26:13.260 回答