C++工程文件之间相互调用

一个文件A中有变量Int_double_map,现在执行完文件A,Int_double_map得到了一个值;
转而执行文件B,文件B中的函数调用A中的一个函数Getmap得到其返回值,
返回值即为Int_double_map;
请问此时Int_double_map是不是已经无效了(即不是原来设置的数值)?

////////////////////////// 头文件A
A.h

class A{
public:
Setmap();
double Getmap(uint16_t m);
private:
std::map Int_double_map;
};
//////////////////////////源文件A
A.cc
#include

A:Setmap()
{
Int_double_map.insert(std::make_pair(0, 0.1) );
Int_double_map.insert(std::make_pair(1, 1.1) );
Int_double_map.insert(std::make_pair(2, 2.1) );
Int_double_map.insert(std::make_pair(3, 3.1) );
}
double A:Getmap(uint16_t m)
{
std::map iter=Int_double_map.find(m );
return iter->second;
}

//////////////////////////头文件B
B.h
#include
class B{
public:
B();
double Getmap(uint16_t m);
private:
uint16_t n;
ptr _a_pointer;
};

//////////////////////////源文件B
B.cc
#include

B:B():_n_(2)
{}
double B:Getmap(uint16_t n)
{
return a_pointer->Getmap(_n);
}
//////////////////////////

这个看你怎么用了,每定义一个A类型,就会有个Int_double_map,如果同一个变量就是相同的,不同的变量就不确定了。

函数返回值对象拷贝 那你调用者得到的对象就是正确的

 你的_m_类型是std::map<uint16_t, double >,但是getmap返回的是double,你的代码本身就不对。
假设你返回的是成员变量的 _m_,当然还是原来那个,除非A类的对象本身被拷贝。