繁体   English   中英

STL Container作为私有成员。 分段故障

[英]STL Container as private member. Segmentation Fault

我在使用STL容器时遇到一个奇怪的问题。

我有一个带有私有成员std::map<string, string> _environment 为什么当我在类构造函数(或任何地方)中调用_environment["name"]="john" ,出现了Segmentation fault

它应该是STL容器的最常用用法,不是吗?

谢谢!

编辑(更多代码):

在shell.h中:

#include <string>
#include <map>

using namespace std;

class Shell {
    public:
        Shell();
        Shell(const Shell& orig){};
        virtual ~Shell(){};

    private:
        ...
        ...
        std::map<string, string> _environment;
};

在shell.cpp中:

Shell::Shell() {    
    _environment["shell"] = "myshell";    
    ...
}

分段错误发生在行_environment["shell"] = "myshell";

没有出现分段错误的原因。 为了简化插入,我建议使用boost :: assign库,如下所示:

Shell::Shell() {
    using namespace boost::assign;
    insert( _environment )( "shell", "myshell" );    
    ...
}

这更优雅,更有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM