数组类 - 错误:无法将参数从“double”转换为“int”

时间:2013-07-29 10:07:35

标签: c++ arrays class double

我之前向社区询问过这个程序,但是我遇到了最后一个问题,在互联网上快速搜索显示这是一个常见问题。

下面是我的代码,后面是我的构建输出

Grader.cpp

#include <iostream>
#define MAXSIZE 100
#include "Grader.h"

Grader::Grader( ){
my_Values [MAXSIZE] = 0;
my_ValuesSeenSoFar = 0;
}

void Grader::addScore( int score ){
if( my_ValuesSeenSoFar < MAXSIZE)
    my_Values[my_ValuesSeenSoFar++] = score;
}
void Grader::addScores( int scores[], int size ){
    for(int i=0; (i < size) && (my_ValuesSeenSoFar < MAXSIZE) ; i++)
        my_Values[my_ValuesSeenSoFar++] = scores[i];
}
void Grader::clear(){
    for(int i=0;  i < MAXSIZE ; i++)
        my_Values[i] = 0;

}

int Grader::findBiggest() const{

   int max = my_Values[0];
   for(int i=1; i < my_ValuesSeenSoFar ; i++)
   {
        if( my_Values[i] > max)
            max = my_Values[i];
   }   
   return max;
}
int Grader::findSmallest( ) const{
    int min = my_Values[0];
    for(int i=1; i < my_ValuesSeenSoFar ; i++)
    {
        if( my_Values[i] < min )
            min = my_Values[i];
    } 
    return min;
}

Driver.cpp

#include <iostream>
#include "Grader.h"
using namespace std;
int main( )
{
Grader g;
double d[5]= {99,70,85,93,84};
double e[4]= {100,81,60,91};

g.addScore( 75 );
g.addScore( 82);
g.addScores( d, 5 ); 

cout << "Best Score = " << g.findBiggest( ) << endl;
/// should give value 99
cout << "Worst Score = " << g.findSmallest( ) << endl;
/// should give value 70
g.clear( );

g.addScore( 50 );
g.addScore( 74 );
g.addScores( e, 4 ); 

cout << "Best Score = " << g.findBiggest( ) << endl;
/// should give value 100
cout << "Worst Score = " << g.findSmallest( ) << endl;
/// should give value 50 
}

我的错误输出如下

  

------ Build build:Project:Grader,Configuration:Debug Win32 ------ Build build 7/29/2013 2:55:05 AM。 InitializeBuildStatus:触摸“Debug \ Grader.unsuccessfulbuild”。 ClCompile:Grader.cpp
  Driver.cpp \ psf \ home \ documents \ visual studio   2010 \ projects \ grader \ grader \ driver.cpp(12):错误C2664:   'Grader :: addScores':无法将参数1从'double [5]'转换为   'int []'             指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换   \ psf \ home \ documents \ visual studio   2010 \ projects \ grader \ grader \ driver.cpp(22):错误C2664:   'Grader :: addScores':无法将参数1从'double [4]'转换为   'int []'             指向的类型是无关的;转换需要reinterpret_cast,C风格的转换或函数式转换生成   代码...

     

构建失败。

     

时间流逝00:00:01.84   ==========构建:0成功,1个失败,0个最新,0个跳过==========

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

double d[5]= {99,70,85,93,84};
double e[4]= {100,81,60,91};

让它成为int。

答案 1 :(得分:0)

double d[5]= {99,70,85,93,84};
double e[4]= {100,81,60,91};

d/e被定义为double,Grader::addScores只接受int类型。

void Grader::addScores( int scores[], int size ) 
g.addScores( e, 4 ); 

如果您不打算让d/e加倍,请将它们更改为int类型:

int d[5]= {99,70,85,93,84};
int e[4]= {100,81,60,91};