Здравствуйте, я новичок в C ++. И сегодня, когда я тестировал проект своего кода, я столкнулся с проблемой, которая заставила меня запутаться.
Я хочу использовать умный указатель в моем проекте синтаксического анализа JSON, поэтому я передаю строку класса: json_content
и хочу, чтобы член json_content
, json_value
получил строку. Компилятор не дал мне ни предупреждения, ни ошибки, но когда я запускаю файл a.out, он сообщает, что segmentation fault
. Я много искал в Google, но не нашел решения этой проблемы. Кто-нибудь может мне помочь? Большое спасибо! :)
Кстати, моя ОС MacOSX x86_64-apple-darwin18.2.0
, компилятор Apple LLVM version 10.0.0 (clang-1000.10.44.4)
Вот код:
#include <string>
#include <iostream>
#include <memory>
#include <typeinfo>
using namespace std;
class json_content {
public:
string json_value;
};
int main()
{
shared_ptr<json_content> c;
shared_ptr<string> p2(new string("this is good"));
// segmentation fault
c->json_value = *p2;
// this is also bad line!
c->json_value = "not good, too!";
return 0;
}