【问题标题】:it always show build fail when i declare the class当我声明类时它总是显示构建失败
【发布时间】:2018-11-23 18:32:07
【问题描述】:

这是抽象类

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 声明该类;但它一直显示构建失败。

很久没用C++了,这几年一直在用java。这是某种声明错误还是我的抽象类写错了?

【问题讨论】:

  • 就我个人而言,我觉得风格的选择很难读懂。
  • number_sort 的实现在哪里?这是必需的。析构函数也应该是虚拟的。
  • 你是否在某处定义了 num 和 qww ?
  • 基类是如何抽象的?
  • 首选使用std::vector。传递数组时,需要第一个元素的地址,以及数组的容量。在 C++ 中,数组的容量不作为参数传递。

标签: c++ interface xcode8 abstract-class function-declaration


【解决方案1】:

尝试使用:

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 用于继承的类覆盖方法。

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2021-05-19
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多