我有以下代码:
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/