从Find Max方法&中返回一个int值。在测试文件中打印

时间:2016-11-15 23:28:57

标签: c++ return-value

我实现了一个findMax方法&测试此功能的测试人员。事先,我将findMax方法视为无效,只需要cout<< maxValue<<在方法结束时,所以当它在主测试器中被调用时,它会打印出我想要的结果。

我正在尝试更改它,因此方法的返回类型为int,并且主要能够打印出方法返回的值。当我尝试在测试器文件中操作变量maxValue时,它表示变量undefined。

我该怎么做才能解决这个问题?还有什么最合适的方法呢?将方法作为void类型并在方法中使用cout语句或将其作为整数类型,以便在结束时返回一个int ??

感谢。

#ifndef FINDMAX_H
#define FINDMAX_H
#include <iostream>
using namespace std;

template < typename T >
int FindMax(T* array, int array_len) {

    if (!array || array_len  <=0 ) {
        cout << "Invalid Array" << endl;
        exit(1);
    }

        //T * newArray = new int[array_len]; //create new array
        T maxValue = array[0]; //set to the first array element
        int largestIndex = 0;

        for (int i = 1; i < array_len; i++) { //going through array from pos 2
            if (array[i] > maxValue) { //checking if value at array position i is > maxValue
                maxValue = array[i]; //set maxValue = to element at current Array position
                largestIndex = i; //set largest index = to the current index it is at
            }

            return maxValue;
        }
        //cout << "The max value in this array is: " << maxValue << endl;//return highest value in array

        //cout << "The max value is at position : " << largestIndex << endl;//return position of highest value in the array
        //cout << "" << endl;
}

#endif

测试

#include "FindMax.h"
#include <iostream>
using namespace std;
#include <string>

int main() {


    int array_len = 10; 
    int* array = new int[array_len];
    double* array2 = new double[array_len];

    for (int i = 0; i < array_len; i++) //fill array 1
        array[i] = i * i;

    for (int i = 0; i < array_len; i++) //fill array 2
        array2[i] = i * 2.5;

    FindMax(array, array_len);
    cout << maxValue << endl; // error here


}

1 个答案:

答案 0 :(得分:0)

首先,该功能具有无法访问的代码

template < typename T >
int FindMax(T* array, int array_len) {
            //...

            return maxValue;
            return largestIndex;
           ^^^^^^^^^^^^^^^^^^^^^^
        }
        //cout << "The max value in this array is: " << maxValue << endl;//return highest value in array

        //cout << "The max value is at position : " << largestIndex << endl;//return position of highest value in the array
        //cout << "" << endl;
}

您应该删除最后一个返回语句。

至于错误,那么你应该写

int maxValue = FindMax(array, array_len);
^^^^^^^^^^^^^
cout << maxValue << endl; // error here

您必须声明变量maxValue并为其分配算法的返回值。