[英]Create std::function which returns variant with a value of a function member. Segmentation fault
[英]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.