我有一个std::string*
作为我班级的成员,但是当我尝试将其值设置为类构造函数中的任何内容时,我得到了segmentation fault (core dumped)
相关代码部分:
// class declaration:
//...
std::string* _sensorString;
//...
// on class constructor
//...
std::cout << "test "<< std::endl;
*_sensorString="s";
std::cout << *_sensorString<< std::endl;
//...
计划的输出:
test
Segmentation fault (core dumped)
答案 0 :(得分:6)
std::string*
是一个指针,当指针尚未初始化时,为指针赋值会导致分段错误。标准模板库可以帮助您使用对象,这样您就不需要指针。只需将您的类型声明为即可
std::string _sensorString;
然后您可以将其用作
_sensorString = "s";
答案 1 :(得分:4)
您没有为对象分配内存,
std::string* _sensorString;
你应该写
_sensorString = new std::string;
写作之前
*_sensorString="s";