C ++ - 导致SIGSEGV信号的空方法

时间:2013-04-20 05:13:58

标签: c++ sigsegv

我正在为一个大学任务制作一个简单的牌组/牌/手牌对象系统,我已经陷入了这个问题。

我已经设置了一个简单的测试类,它调用对象中的各种方法。

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 ?? () ()

2 个答案:

答案 0 :(得分:3)

您声明在ftring函数中返回一个字符串,但实际上并没有返回任何内容。这很糟糕。

答案 1 :(得分:0)

您的方法必须返回string - 这是您声明它的方式。你得到了未定义的行为。