我是新手 - 我的面向对象编程类简介的项目。任何帮助都会非常感激。 所以我开始创建BubbleSort类和成员函数。 sort应该采用长度为10的整数数组,并从最大到最小打印它们。我提供了一个指向我老师给我们的一些代码的链接,以帮助我们完成任务。对不起,如果这太模糊,我相信我的整体设计有问题。感谢您的时间。我在Xcode中也遇到以下错误 预期'('用于功能式演员或类型构造 和 未使用的变量' nArray' enter image description here
#include <iostream>
using namespace std;
// class declaration
class BubbleSort
{
public:
BubbleSort(); //initialize nArray to contain set of unsorted numbers
void sort(int nArray []); //sort array
private:
int nArray[]; //stores the unsorted numbers
};
BubbleSort :: BubbleSort() { //default constructor
int nArray [] = {256, 734, 201, 3, 123, 40, 99, 257, 7, 609};
}
void BubbleSort :: sort (int nArray []) { //prints the highest number
int highest = nArray[0]; //highest value of the array
int index = 0; //index of the highest value of the arrray
int count = 0; //counts the time you check the array
while (count != 10) {
for (int i = 0; i < 10; i++) {
if (nArray[i] > highest) {
highest = nArray[i];
index = i;
}
}
cout << "The highest value at that moment: " << highest << endl;
nArray[index] = 0;
highest = 0;
count ++;
}
}
int main() {
BubbleSort myArray; //create object
myArray.sort(int myArray[])
return 0;
}
答案 0 :(得分:2)
您声明的字段为array,没有任何指定的维度。这在C ++中是错误的。 (请注意,C有flexible array members,但标准C ++没有它们。
至少,将维度声明为宏:
#define ARRAY_SIZE 10
或作为常数:
static constexpr int ARRAY_SIZE= 10;
然后声明具有该大小的字段:
int nArray[ARRAY_SIZE];
在正版C ++中,更好地使用标准containers。您应该使用std::vector或std::array ....
使用GCC编译所有警告和调试信息:g++ -Wall -Wextra -g
然后使用调试器 gdb
逐步运行程序,查询其状态,因此,了解什么是错的。
作为成员函数的sort
不需要将数组作为参数。
您在多个scopes中声明了几个不同的 nArray
。这是令人困惑的,不要使用同义词(所以不要声明几个nArray
- s,使用不同的名称。)
花更多时间阅读一本好的C ++编程书,一些C++ reference,以及编译器和调试器的文档。
请注意,Xcode不是您的编译器,而只是IDE(正在运行一些外部编译器 - 可能是GCC或Clang - 下面)。我建议使用命令行在终端中运行编译器。
答案 1 :(得分:0)
不建议使用using namespace std;
- 因为它从std导入所有标识符。请在Stack Overflow上查看此问题。
如前所述,最好使用标准容器,如std :: vector
我知道老师给你的分配是学习过程的一部分,但是为了按照升序对数组中的元素进行排序,你也可以使用std::sort