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

时间:2015-08-12 23:17:29

标签: c++ class initialization

我知道有很多关于这个主题的帖子,但我觉得我的情况有点不同。我不知道我想做什么是可能的,如果不是,请告诉我!现在,我的代码看起来像这样:

#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;
}

基本上,在函数setString中,我试图根据传入的字符串将成员变量初始化为默认值。但是,我似乎不知道如何执行此操作。当我在main函数中调用成员变量时,只是声明一个本地DLNA并在setString函数中设置它的值似乎没有任何影响。有谁知道如何解决我的问题,或者这是否可能?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可能想要这个吗? 在cout之后仔细观察那个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;
}

答案 1 :(得分:0)

有关将变量名称作为字符串获取的确切问题的讨论,请参阅here。简而言之 - 不,你不能做到,虽然有办法模仿它,但是你的代码难以理解,你应该做不同的事情。

在您的情况下,i=147成员函数

可能会出现类似情况
setString