Я не понимаю ошибку "определение имплицитности" Одежда :: Одежда () " - PullRequest
0 голосов
/ 10 марта 2019

Вопрос:

Почему происходит следующая ошибка?

определение имплицитно-объявленной 'Одежда :: Одежда ()

Контекст:

В качестве задания я должен делать конструкторы, деструкторы и методы в классе одежды. У меня проблема при попытке определить конструктор в clothing.cpp . Я читал, что проблема в том, что я не объявил конструктор в clothing.h , но я думаю, как я это сделал, он объявлен. Я понятия не имею, в чем проблема.

Мой код:

clothing.h:

#ifndef CLOTHING_H_
#define CLOTHING_H_
#include <string>
#include <iostream>

using namespace std;

class Clothing {
private:
    int gender;
    int size;
    string name;

public:
    Clothing();
    Clothing(const Clothing &t);
    Clothing(int gender, int size, string name);
    ~Clothing();
    int getGender();
    int getSize();
    string getName();
    void setGender(int gender1);
    void setSize(int size1);
    void setName(string name1);
    void print();
    void toString();
};

#endif /* CLOTHING_H_ */

clothing.cpp:

#include <iostream>
#include "clothing.h"
#include <string>
#include <sstream>

using namespace std;

Clothing::Clothing() :
        gender(1), 
        size(1), 
        name("outofstock") {

}

Clothing::Clothing(const Clothing& t) :
        gender(t.gender), 
        size(t.size), 
        name(t.name) {
}

Clothing::Clothing(int gender, int size, string name) {

}

int Clothing::getGender() {
    return gender;
}

int Clothing::getSize() {
    return size;
}

string Clothing::getName() {
    return name;
}

void Clothing::setGender(int gender1) {
    gender = gender1;
}

void Clothing::setSize(int size1) {
    size = size1;
}

void Clothing::setName(string name1) {
    name = name1;
}

void Clothing::print() {
    cout << name << "  " << gender << "  " << size << endl;
}

void Clothing::toString() {
    stringstream ss;
    ss << name << "  " << gender << "  " << size;
    cout << ss.str();
}

Ошибки: \ src \ clothing.cpp: 7: 21: ошибка: определение неявно объявленного 'Clothing :: Clothing ()'

\ src \ clothing.cpp: 14: 37: ошибка: определение неявно объявленной «Одежда :: Одежда (const Clothing &)»

1 Ответ

2 голосов
/ 10 марта 2019

Ошибка: вы объявили деструктор, но не определили его.Добавьте определение для деструктора или определите его по умолчанию:

#ifndef CLOTHING_H_
#define CLOTHING_H_
#include <string>
#include <iostream>

using namespace std;

class Clothing {
private:
    int gender;
    int size;
    string name;

public:
    Clothing();
    Clothing(const Clothing &t);
    Clothing(int gender, int size, string name);
    ~Clothing() = default; // <-- add a default destructor
    int getGender();
    int getSize();
    string getName();
    void setGender(int gender1);
    void setSize(int size1);
    void setName(string name1);
    void print();
    void toString();

};
#endif /* CLOTHING_H_ */

После исправления этот код работает: tio.run

Если у вас больше проблем сваш код, проблемы выходят за пределы предоставленного вами фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...