【问题标题】:Array Classes - Error: Cannot Convert Parameter from 'double' to 'int'数组类 - 错误:无法将参数从“double”转换为“int”
【发布时间】:2013-07-29 10:07:35
【问题描述】:

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

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

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 
}

而我的错误输出如下

----- 构建开始:项目:Grader,配置:调试 Win32 ------ 构建开始于 2013 年 7 月 29 日凌晨 2:55:05。 InitializeBuildStatus:触摸“Debug\Grader.unsuccessfulbuild”。 Cl编译: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-style cast 或 function-style cast \psf\home\documents\visual studio 2010\projects\grader\grader\driver.cpp(22):错误 C2664: “Grader::addScores”:无法将参数 1 从“double [4]”转换为 'int []' 指向的类型是不相关的;转换需要 reinterpret_cast、C-style cast 或 function-style cast 代码...

构建失败。

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

有什么想法吗?

【问题讨论】:

  • 您正在将双精度数组传递给一个需要 int 数组的函数。
  • @Jack 我的印象是我无法更改 driver.cpp 代码---但是,经过仔细检查,该项目并没有明确表示这是被禁止的---在我的假设,显然,我忽略了这个明显的解决方案
  • 请喜欢/接受您认为有用的答案。刚刚提到,因为你是新来的。

标签: c++ arrays class double


【解决方案1】:
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};

【讨论】:

    【解决方案2】:
    double d[5]= {99,70,85,93,84};
    double e[4]= {100,81,60,91};
    

    把它变成int。

    【讨论】:

    • 把它叫做 g.addScore((int)d, 5);
    猜你喜欢
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多