C++ 在函数内定义类的成员变量

C++ 在函数内定义类的成员变量,c++,class,initialization,C++,Class,Initialization,我知道有很多关于这个话题的帖子,但我觉得我的情况有点不同。我不知道我想做的是否可能,如果不可能,请让我知道!现在,我有如下代码: #include <iostream> #include <fstream> #include <string> using namespace std; class Something { public: string location; string isLocal; string IPAddr

我知道有很多关于这个话题的帖子,但我觉得我的情况有点不同。我不知道我想做的是否可能,如果不可能,请让我知道!现在,我有如下代码:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Something
{
   public:
    string location;
    string isLocal;
    string IPAddress;
    string setString(string key)
    {
          //key will be either location, isLocal, or IPAddress  
          //set that value to "found" so when I call the member variable later, it will output found
    }

};

int main(int argc, char* argv[])
{
  DLNA local;
  string answer = local.setString("IPAddress");
  cout << local.IPAddress; // should return "found"
  return 0;
}
#包括
#包括
#包括
使用名称空间std;
分类
{
公众:
字符串位置;
弦是局部的;
字符串地址;
字符串设置字符串(字符串键)
{
//密钥将是location、isLocal或IPAddress
//将该值设置为“found”,以便稍后调用成员变量时,它将输出found
}
};
int main(int argc,char*argv[])
{
DLNA本地;
字符串应答=local.setString(“IPAddress”);

你可能想要这个,对吗? 仔细观察屏幕后面的endl。这会将“内容”清除。因此它会在屏幕上打印输出。尝试在没有endl的情况下运行它。希望这有帮助

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Something
{
   public:
    string location;
    string isLocal;
    string IPAddress;
    string setString(string key)
    {
        if (key == "location") 
        {
            location = "found";
            return location;
        }
        else if (key == "isLocal") 
        {
            isLocal = "found";
            return isLocal;
        }
        else if (key == "IPAddress") 
        {
            IPAddress = "found";
            return IPAddress;
        }

        return "not found";
    }

};

int main(int argc, char* argv[])
{
  Something local;
  string answer = local.setString("IPAddress");
  cout << local.IPAddress << endl; // should return "found"
  return 0;
}
#包括
#包括
#包括
使用名称空间std;
分类
{
公众:
字符串位置;
弦是局部的;
字符串地址;
字符串设置字符串(字符串键)
{
如果(键==“位置”)
{
location=“found”;
返回位置;
}
else if(键==“isLocal”)
{
isLocal=“found”;
返回本地;
}
else if(键==“IPAddress”)
{
IPAddress=“已找到”;
返回IP地址;
}
返回“未找到”;
}
};
int main(int argc,char*argv[])
{
地方性的东西;
字符串应答=local.setString(“IPAddress”);

你可能想要这个,对吗? 仔细观察屏幕后面的endl。这会将“内容”清除。因此它会在屏幕上打印输出。尝试在没有endl的情况下运行它。希望这有帮助

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Something
{
   public:
    string location;
    string isLocal;
    string IPAddress;
    string setString(string key)
    {
        if (key == "location") 
        {
            location = "found";
            return location;
        }
        else if (key == "isLocal") 
        {
            isLocal = "found";
            return isLocal;
        }
        else if (key == "IPAddress") 
        {
            IPAddress = "found";
            return IPAddress;
        }

        return "not found";
    }

};

int main(int argc, char* argv[])
{
  Something local;
  string answer = local.setString("IPAddress");
  cout << local.IPAddress << endl; // should return "found"
  return 0;
}
#包括
#包括
#包括
使用名称空间std;
分类
{
公众:
字符串位置;
弦是局部的;
字符串地址;
字符串设置字符串(字符串键)
{
如果(键==“位置”)
{
location=“found”;
返回位置;
}
else if(键==“isLocal”)
{
isLocal=“found”;
返回本地;
}
else if(键==“IPAddress”)
{
IPAddress=“已找到”;
返回IP地址;
}
返回“未找到”;
}
};
int main(int argc,char*argv[])
{
地方性的东西;
字符串应答=local.setString(“IPAddress”);
有关将变量名称作为字符串的问题的详细讨论,请参见。简而言之-不,您不能这样做,尽管有一些方法可以模拟它,但它们会使您的代码难以理解,您应该采取不同的做法

在您的情况下,可以为
setString
成员函数提供类似的功能

string setString(string key)
{
    if (key == "location") {
        location = "found";
    } elseif (key == "isLocal") {
    if (key == "isLocal") {
        isLocal = "found";
    } elseif (key == "IPAddress") {
        IPAddress = "found";
    } else {
        // handle unmatched case somehow (error message)
    }
    return "found";
}
有关以字符串形式获取变量名称的确切问题的讨论,请参阅。简言之-不,您不能这样做,尽管有一些方法可以模拟它,但它们会使您的代码难以理解,您应该采取不同的做法

在您的情况下,可以为
setString
成员函数提供类似的功能

string setString(string key)
{
    if (key == "location") {
        location = "found";
    } elseif (key == "isLocal") {
    if (key == "isLocal") {
        isLocal = "found";
    } elseif (key == "IPAddress") {
        IPAddress = "found";
    } else {
        // handle unmatched case somehow (error message)
    }
    return "found";
}

初始化哪个成员变量?在本例中,设置IPAddress。如果不将成员变量硬编码到正确的位置,我无法设置它。例如,如果参数key是isLocal,有没有办法将程序设置为“found”isLocal?呃,为什么不使用if块呢?…真不敢相信我没有想到。我的实际文件中有20个成员变量,所以这会有点麻烦,但现在,这就是我的全部。谢谢!你可能应该重新审视你的设计。我不知道你到底在做什么,但设置20个变量中的一个,忽略其余变量在字符串上感觉不对劲。初始化哪个成员变量?在本例中,设置IPAddress。如果不将成员变量硬编码到正确的位置,我无法设置它。例如,如果参数key是isLocal,有没有办法将程序设置为“found”isLocal?呃,为什么不使用if块呢?…真不敢相信我没有想到。我的实际文件中有20个成员变量,所以这会有点麻烦,但现在,这就是我的全部。谢谢!你可能应该重新审视你的设计。我不知道你到底在做什么,但设置20个变量中的一个,忽略其余变量在字符串上感觉不舒服。谢谢!其他用户回答得稍早,因此我授予他答案,但您的代码也有效!谢谢!其他用户回答得稍早,因此我授予他答案,但您的代码也有效!