我似乎无法从子类访问父类中的地图,因为我尝试输出地图的内容而不显示任何内容。
以下我已添加完整代码,如果我在transLateMask()中填充地图,它将打印出内容,但是如果我填充populate()中的地图它将打印出任何内容,我会这样做不知道为什么?
这是我的代码。
//HEADER FILE
//////PARENT CLASS
#include <iostream>
#include <string>
struct TTYElementBase
{
//some code here
};
class element
{
public:
std::map<char,std::string> transMask;
std::map<char,std::string>::iterator it;
void populate();
};
//////CHILD CLASS .HPP
class elementV : public element
{
public :
std::string s1;
std::string s2;
elementV();
friend ostream &operator<< (ostream &, const elementV &);
void transLateMask();
};
//CPP FILE #include "example.h"
elementV::elementV()
{
}
void element::populate()
{
transMask['D']='D'; //WILL PRINT OUT NOTHING IF I POPULATE HERE
}
void elementV::transLateMask()
{
for ( it=transMask.begin() ; it != transMask.end(); it++ )
std::cout << (*it).first << std::endl;
}
int main()
{
element e;
e.populate();
elementV v;
v.transLateMask();
}
它没有输出任何东西 - 为什么会这样?
答案 0 :(得分:1)
我认为你没有包含指令#include <string>
。
答案 1 :(得分:1)
对e.populate()的调用会填充e.transMask,而不是v.transMask。你需要调用v.populate()。
答案 2 :(得分:0)
同时将#include <string.hpp>
替换为#include <string>
除了可选项,您可以添加using namespace std;
,这样您就不必在整个地方使用std::
限定符