我收到原型错误:hanning。
cpp:26:1: error: prototype for 'int hanning::randomArray(int*, int*, int*)' does not match any in class 'hanning'
hanning::randomArray(int *length, int *lowValue, int *highValue) {
^~~~~~~
然而,我不确定我做错了什么。以下是标题和类文件的示例:
#ifndef HANNING_HPP
#define HANNING_HPP
class hanning {
public:
int *randomArray(int *length, int *lowValue, int *highValue); //Problem 1
private:
};
#endif /* HANNING_HPP */
现在是班级:
#include "hanning.hpp"
#include <stdlib.h>
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
// Problem 1: Random Number array
//Fills a dynamically allocated array with random numbers in a low to high range
hanning::randomArray(int *length, int *lowValue, int *highValue) {
*length = (rand() % 25) + 25;
*lowValue = -1 * (rand() % 5 + 5);
*highValue = (rand() % 5) + 5;
int *arr = new int[*length];
for (int i = 0; i < *length; i++) {
arr[i] = rand() % (*highValue - *lowValue + 1) + *lowValue;
}
return arr;
}
我不知道为什么我遇到这个问题。我正在使用netbeans 8.2
答案 0 :(得分:2)
您忘记了函数定义中的返回类型int *
:
int *hanning::randomArray(int *length, int *lowValue, int *highValue) {
...
}
答案 1 :(得分:2)
您的定义如下:
hanning::randomArray(int *length, int *lowValue, int *highValue) {
您可以看到没有返回类型,而应该是int*
。
如果您想知道为什么错误与定义无关,那是因为假定没有返回类型的函数返回int
所以它本身就是一个有效的声明。