我正在爲大學任務製作一個簡單的卡片/卡/面向對象的系統,並且我陷入了這個問題。C++ - 導致SIGSEV信號的空方法
我設置了一個簡單的測試類,它調用對象中的各種方法。
int main() {
Deck deck = Deck();
deck.DisplayDeck();
deck.Shuffle();
deck.DisplayDeck();
Hand hand = Hand(1);
Card* card;
card = deck.DealNextCard();
hand.AddCard(card);
hand.ftring();
deck.DisplayDeck();
}
,問題就出現在hand.ftring()
。當我打電話給它時,會導致分段錯誤。奇怪的是,它不包含代碼。
在hand.cpp
:
string Hand::ftring() {
}
如果我刪除它,它運行到完成。如果我添加一個控制檯輸出到方法,它打印它,然後崩潰。我完全不知所措,以什麼做的,因爲調試器只規定
Program received signal SIGSEGV, Segmentation fault.
In ??()()
我發現很難相信'g ++'仍然不會默認發出警告(MSVC默認爲C++,C警告)。爲了得到關於這個問題的警告(以及更多),在編譯gcc/g ++時使用'-Wall'選項。 – 2013-04-20 05:35:11
你也可以改變'Hand hand = Hand(1);'只是'Hand hand(1);'並且避免因爲賦值而產生額外的副本。 – stardust 2013-04-20 05:46:50