このクラスで<<演算子をオーバーロードしようとしていますが、これは出力です。
Hello,
Segmentation fault: 11
これは私のコードです:
test.cc:
#include <iostream>
#include "class.h"
#include <string>
using namespace std;
int main() {
MYString s("Hello");
MYString s2;
string hello = "Hello";
cout << s.text << ", " << s2.text << endl;
cout << "S: " << s << endl;
hello[0] = 'M';
cout << hello << endl;
return 0;
}
そしてこれはclass.hです:
#ifndef CLASS_H
#define CLASS_H
#include <string>
using namespace std;
class MYString {
public:
string text;
MYString(string data="") {
text = data;
}
friend ostream& operator << (ostream& os, const MYString& data) {
os << data;
return(os);
}
};
#endif
正常にコンパイルされますが、なぜ「セグメンテーション違反:11」と表示されるのかわかりません。それが何を意味するのかもわかりません。誰かがこれを修正する方法を教えてもらえますか?また、C++も初めてです。
(そして、このコードが本当に無意味であることも知っていますが、私はただ物事を学び、C ++に慣れようとしているだけです)