继承无法访问地图

时间:2012-01-12 21:37:42

标签: c++ inheritance map

我似乎无法从子类访问父类中的地图,因为我尝试输出地图的内容而不显示任何内容。

以下我已添加完整代码,如果我在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();
}

它没有输出任何东西 - 为什么会这样?

3 个答案:

答案 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::限定符