下面的代碼顯示了分段錯誤。但是,當我引用cout << endl
聲明時,它將排除seg故障。我還打印了一份沒有endl
的聲明,並且在main()
的開頭正好碰到了seg錯誤。有人可以幫我解決這個問題嗎?謝謝!奇怪的分割錯誤在主開始處
#include <iostream>
using namespace std;
typedef struct node{
string city;
node * next;
} Node;
class Vertex{
public:
Vertex(string cityName) {
x->city = cityName;
x->next = NULL;
}
void printCity() {
cout << x->city << endl;
}
private:
Node * x;
};
int main() {
//cout << endl;
Vertex x("Phoenix");
x.printCity();
return 0;
}
數據成員';它總是一個懸掛的指針。 – songyuanyao
@songyuanyao你是什麼意思?我該如何解決這個問題? – aashman
如果可能,不要使用原始指針,只要'Node x;'應該沒問題。如果必須在構造函數中添加'x = new Node;',那麼在使用它之前。 (並執行析構函數來刪除它,並複製/移動構造函數,賦值運算符,...請參見[三什麼規則?](https://stackoverflow.com/questions/4172722/what-is-三條規則)) – songyuanyao