访问在类c ++的其他函数上声明的变量

时间:2014-05-26 12:36:10

标签: c++ linux

我有以下简单的初学者c ++代码来处理函数。任何人都可以帮助我如何访问另一个类中函数声明的变量。

myclass.h

#include <iostream>
using namespace std;
class myclass
{
public:
   void function_1(string str1);
   void function_2(string str2);
   void function_3(string str_var1,string str_var2);
};

myclass.cpp

#include <iostream>
#include"myclass.h"
using namespace std;

void myclass::function_1(string message1)
{
    string str_in_fun_1=message1;
}

// -------------------
void myclass::function_2(string message2)
{
    string str_in_fun_2=message2;
}

// ------------------   
void ::function_3(string str1,string str2)
{
    cout<<"we get:"<<str1<<"and"<<str2;
}

// main.cpp中

#include"myclass.h"
#include <iostream>
using namespace std;
int main()
{
    myclass in_myclass;
    in_myclass.function_1("this is my first function!");
    in_myclass.function_2("this is my second function!");
}

问题是,我可以在function_3()中以下(以下)方式访问/使用在function_1()和function_2()中声明的变量。

in_myclass.function_3(in_myclass.function_1.str_in_fun_1,in_myclass.function_2.str_in_fun_2) {
    return 0;
}

如果没有,请帮帮我......

3 个答案:

答案 0 :(得分:1)

NO。无法从 方法之外访问方法范围的变量。如果您需要访问它们,它也不是好的设计。如果变量类似于类的 state ,那么它们应该是类成员并直接访问/ accesor方法。如果它们只是方法中的计算所需,则它们应该是本地方法。最后,如果这些都不适用,请将它们设为 global (尽管它在 OO 透视图中很糟糕,并且可能导致很难找到错误)。虽然如果您需要将它们保留在多个方法调用中,请将它们设为static

答案 1 :(得分:0)

您只能使用全局变量,最好在.h文件中定义。 因此,如果要在函数1和2中使用变量a(类型int),请执行以下操作:

int a; // add this to your myclass.h (outside class)

然后你可以使用&#39; a&#39;在所有具有#include "myclass.h"

的功能/子程序中

答案 2 :(得分:0)

c ++允许您访​​问在一个函数中初始化的变量,以便在其他函数中使用相应类的数据成员进行访问。 像这样重新定义你的课程

#include <iostream>
using namespace std;
class myclass
{
public:
   String str1, str2;
public:
  function_1(string str1);
  function_2(string str2);
  function_3(string str_var1,string str_var2);
};