STL 容器作为私有成员。分段错误

发布于 2024-10-04 01:51:34 字数 800 浏览 0 评论 0原文

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

我有一个带有私有成员 std::map的类_环境。为什么当我在类构造函数(或任何地方)中调用 _environment["name"]="john" 时,会出现分段错误

它应该是 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" 中;

I'm having a strange problem with a STL Container.

I have a class with a private member std::map<string, string> _environment. Why when I call _environment["name"]="john" in the class constructor (or anywhere), I get a Segmentation fault?

It should be the most common use of a STL container, shouldn't it?

Thanks!

Edit (more code):

In 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;
};

In shell.cpp:

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

The segmentation fault occurs in the line _environment["shell"] = "myshell";

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一江春梦 2024-10-11 01:51:35

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

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

这更优雅、更有效。

There is no reason for Segmentation fault. And for simplify inserting I recommend to use boost::assign library, like this:

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

This is more elegantly and more effectively.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文