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个变量中的一个,忽略其余变量在字符串上感觉不舒服。谢谢!其他用户回答得稍早,因此我授予他答案,但您的代码也有效!谢谢!其他用户回答得稍早,因此我授予他答案,但您的代码也有效!