c++ - 在 C++ 中创建对象时出现段错误

标签 c++

我有以下代码:

Card.h:

#include <string>

class Card
{
    public:
        enum suits {Spades, Diamonds, Hearts, Clubs};
        Card(int _suit, int _value);
        std::string SuitToString(int suitidx);
        Card();
        ~Card();
    private:
        int value;
        std::string suit;
};

卡片.cpp:

#include <string>
#include <vector>
#include "Card.h"

Card::Card() {
}

Card::Card(int _suit, int _value)
{
    this->suit=SuitToString(_suit);
    this->value=_value;
}

Card::~Card()
{
}

std::string Card::SuitToString(int suitidx)
{
    std::vector<std::string> suitStrings = {"Club", "Diamonds", "Hearts", "Spades"};

    return suitStrings[suitidx];
}

Deck.h:

#include "Card.h"
#include <vector>

class Deck: public Card {
    public:
        Deck();
        ~Deck();

};

Deck.cpp:

#include "Deck.h"
#include <vector>

Deck::Deck()
{
    for (int i=1; i<5; i++) {
        for (int j=1; j<14; j++) {
            Card c(i,j);
            AddCard(c);
        }
    }
}

Deck::~Deck()
{
}

main.cpp:

#include "Deck.h"
#include <iostream>

using namespace std;

int main()
{
    Deck d;
    return 0;
}

但是当我运行它时,我遇到了段错误。有人可以帮忙吗?

最佳答案

@tkausl 是对的,您的问题出在SuitToString-方法中。您使用无效索引调用它。

关于c++ - 在 C++ 中创建对象时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54938773/

相关文章:

c++ - 初学者 C++ 程序员的 gui 库

C++ 方法参数可以是原语或对象

java - JNI、C++及其标准库

c++ - 将函数转换为成员函数

c++ - 遍历所有链表的高效算法(C++)

c++ - 自适应路径-Astar修改

c++ - 如何更改 '\a'声音?

c++ - 将结构传递给函数并在其中输入数据

c++ - 使用递归检查 vector 是否为最小堆

c++ - 创建模板化对象时替代工厂模式 - C++