Ваш класс не имеет default constructor
. Это не проблема сама по себе. Однако, если вы попытаетесь вызвать несуществующий default constructor
, будет показана ошибка. Вы, вероятно, делать что-то подобное в другом месте (одна из этих линий достаточно, чтобы бросить эту ошибку):
Card x;
std::vector<Card> v(3);
auto x=std::make_shared<Card>();
//...and many others...
решение?
Если вы действительно не хотите, чтобы Card
выделялся без предоставления аргументов, вы не должны этого делать. Найдите код, который пытается выделить объект Card
и измените его. КСТАТИ предпочтительно delete
default constructor
в четком заявлении, как это:
class Card{
private:
Suit suit_;
Symbol symbol_;
public:
Card()=delete;
Card(Suit suit, Symbol symbol)
{
suit_=suit;
symbol_=symbol;
}
};
Если все в порядке с выделения объектов из Card
класса со значениями по умолчанию добавьте вместо этого:
class Card{
private:
Suit suit_;
Symbol symbol_;
public:
Card()=default;
//Or Card():suit_(some_value),symbol_(somevalue){}
Card(Suit suit, Symbol symbol)
{
suit_=suit;
symbol_=symbol;
}
};
Здравствуйте. Добро пожаловать в Stack Overflow. Пожалуйста, оглянитесь и возьмите [тур] и прочитайте [справочный центр]. Вы также можете прочитать о [спросите] хороший вопрос. – Sampada
Что именно говорит об ошибке, и какая строка указывает на это неправильно? – immibis
Ваш код не компилируется, а не указанная ошибка. Вы уверены, что скопировали + вставить его правильно? Вы можете [изменить] ваш вопрос, если вам нужно добавить дополнительную информацию. – Tas