来自c ++标头的原型错误

时间:2017-10-03 02:08:34

标签: c++

我收到原型错误: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

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所以它本身就是一个有效的声明。