C++ 候选函数不可行:第一个参数没有从 'int' 到 'int *' 的已知转换;取参数的地址 &



我真的不知道这个错误是什么意思。*代表指针,对吧?我没有使用指针,所以我不明白发生了什么?这是我的第二节编程课,所以我还是个新手。任何帮助都将非常感激!!

MAIN.CPP

#include <iostream>
#include "arr.hpp"

int main()
{
int size = getInteger();
int array;

fillArray(array,size);
sortArray(array, size);         //THE ERROR COMES UP FOR ALL OF THESE FUNCTIONS. 
displayArray(array, size);
binSearch(array, size, value);

return 0;
}

ARR.CPP

#include "arr.hpp"
#include <iostream>
int getInteger()
{
int value;
std::cout << "Please enter integer between 10 and 20 for size of array: ";
std::cin >> value;
// check if size is in range
if (value >= 10 && value <= 20)
{
return value;
}
else
{
std::cout << "Error. Please enter a correct value." << std::endl << std::endl;
std::cin.clear(); //clears error from cin.fail()
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n'); //removes old cin input for value
std::cin >> value;
}
return value;
}
void fillArray(int array[], int size)
{
std::srand(static_cast<unsigned>(std::time(0)));
for (int i = 0; i < size; i++)
{
array[i] = (std::rand() % 99)+1;
}
}
void sortArray(int array[], int size)
{
std::sort(array, array+size);
}
void displayArray(int array[], int size)
{
for (int i = 0; i < size; i++)
{
std::cout << array[i] << std::endl;
if((i+1)%5 == 0)
{
std::cout << std::endl;
}
}
}
bool binSearch(int array[], int size, int value)
{
int low = 0;
int high = size - 1;
int mid;

while(low <= high)
{
mid = (low+high) / 2;
if(value == array[mid])
{
return mid;
}
else if (value > array[mid])
{
low = mid + 1;
}
else
{
high = mid - 1;
}
}
return -1;
}

ARR.HPP


#ifndef arr_hpp
#define arr_hpp
int getInteger();
void fillArray(int array[], int size);
void sortArray(int array[], int size);
void displayArray(int array[], int size);
bool binSearch(int array[], int size, int value);
#endif /* arr_hpp */
  1. 您正在将array声明为整数,而不是数组。我假设你想声明一个大小为size的数组,并将其传递给函数。
  2. 您缺少value的申报。

要解决这个问题,替换array的声明并声明value:

int size = getInteger();
int array[size];
int value;
...

编辑:正如评论中提到的,上述建议在标准c++中是不合法的。要想用合法的c++编译你的程序,你可能有两个选择:

  1. 使size在编译时已知,例如100,并要求用户输入0到100之间的一个数字。
  2. 使用数据结构,如std::vector,并相应地修改所有函数定义。

相关内容

最新更新