我有以下简单的初学者c ++代码来处理函数。任何人都可以帮助我如何访问另一个类中函数声明的变量。
#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);
};
#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;
}
如果没有,请帮帮我......
答案 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);
};