首先,a是函数one中的局部对象,函数one之外的部分是无法访问a的。
你如果 想要访问1.cpp中的a,需要使用全局变量,考虑到编译顺序的问题,你可以这样写:
A & Geta()
{
static A a;
return a;
}
在1.h中写这个函数的声明,1.cpp中写这个函数的定义。然后包含1.cpp通过Geta()就可以直接访问a了。举例: Geta().fun();
one() 创建的哪个A是局部变量, 其他地方不能用的.
你可以用下面的方法:
// one函数创建一个A并返回
A* one()
{
new A;
}
void two()
{
A* one(); // 声明有个函数one可以创建A
A* a=one(); // 得到创建的A
a->fun(); // 调用函数
delete a; // 删除a
}
1)
A one()
{
return A() ;
}
two()
{
one().fun();
}
2)外部变量
//1.cpp
A a;
A& one()
{
return a ;
}
//2.cpp
two()
{
one().fun();
}
3)局部静态变量
//1.cpp
A& one()
{
static A a;
return a ;
}
//2.cpp
two()
{
one().fun();
}
2.cpp 要用 exetern A a;