我在基类中有一个受保护的数组
#pragma once
#ifndef BASE_H
#define BASE_H
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
class Base {
protected:
int N;
int array[100];
friend int compare(const void*, const void*);
};
#endif
我需要在派生类中对其进行排序
#include "Derived2.h"
int compare(const void* arg1, const void* arg2)
{
return (*(int*)arg1 - *(int*)arg2);
}
void Derived2::array_sort() {
qsort (array, N, sizeof(int), compare);
}
派生的.h:
#pragma once
#ifndef DERIVED2_H
#define DERIVED2_H
#include "Base.h"
class Derived2 : public Base {
public:
void array_sort();
void array_output();
friend int compare(const void*, const void*);
};
#endif
但是我遇到了访问冲突错误。 错误截图 (我认为,我的函数“比较”不允许读取基类的受保护字段)
我什至尝试为基类和派生类创建函数“比较”朋友,它仍然不起作用,我得到了同样的错误。如果我尝试让函数比较派生类方法,则项目根本无法编译。如何解决?