это всегда показывает сбой сборки, когда я объявляю класс - PullRequest
0 голосов
/ 23 ноября 2018

Вот абстрактный класс

class number_sort{
    public:
        int num[1024];
        int qww(int a);

    public:
        bool status;
        int number=0;
        virtual bool compare(int a, int b);
        virtual void sort();
        virtual bool test(int a[]);

        virtual void setSet(int a[]);

};    

Вот производный класс

class big_to_small:public number_sort{
    public: int finish[1024];

    void setSet(int a[]){
        for(int i=1;i<=1024;i++){
            if(a[i]!=0) {
                num[i]=a[i];
                number++;
            }
        }
    }

    bool compare(int a, int b) {
        int retur = 0;
        if (a >= b) {
            retur = a;
            status = true;
        }
        if (b >= a) {
            retur = b;
            status = false;
        }
        if (a == b) {
            retur = a;
            status = true;
        }
        return status;
    }

    bool test(int a[]) {
        int numm = 0;
        bool retur = true;
        for (int i = 1; i <= 1024; i++) {
            if (a[i] == 0) {
                numm = i;
                break;
            }
        }
        for (int i = 2; i <= numm; i++) {
            if (a[i - 1] < a[i]) {
                retur = false;
                break;
            }
        }
        return retur;
    }

    void sort() {
        for (int i = 2; i <= number; i++) {
            if (!compare(num[i - 1], num[i])) {
                int k = num[i - 1];
                num[i - 1] = num[i];
                num[i] = k;
            }
        }
        if (!test(num))
            sort();
    }

};

Я написал абстрактный класс и его производные в отдельных cpp и hpp.В основном я объявляю класс используя big_to_small bigg;но он продолжает показывать ошибку сборки.

enter image description here

Я не использовал C ++ в течение очень долгого времени, и я использую Java в течение последних нескольких лет.Это какая-то ошибка объявления или я написал мой абстрактный класс неправильно?

1 Ответ

0 голосов
/ 23 ноября 2018

Попробуйте использовать:

class number_sort{
public:
int num[1024];
int qww(int a);

public:
bool status;
int number=0;
virtual bool compare(int a, int b) = 0;
virtual void sort() = 0;
virtual bool test(int a[]) = 0;

virtual void setSet(int a[]) = 0;
virtual ~number_sort() = default;
};

А затем используйте override для ваших методов переопределения унаследованных классов.

...