如何解决错误:从" int* "到" int "的转换无效

How to solve the error: invalid conversion from " int* " to " int "

本文关键字:int 无效 转换 何解决 解决 错误      更新时间:2023-10-16

需要一些帮助来解决问题。
当我在下面编译我的代码时,它给了我这个错误:

错误:从"int*"到"int"的转换无效

我想创建一个 calculatePercentage 函数,以便在调用它时可以使用该值。

void calculatePercentage(int voteResult[],int percentage[])
const int NO_OF_CANDIDATE = 10;
int main()
    {     
        ifstream input("votes.txt",ios::in);
        string candidates[NUMBER_OF_CANDIDATE];
        int    voteResult[NUMBER_OF_CANDIDATE]; 
        int    percentage[NUMBER_OF_CANDIDATE];   
        for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) {
            input >> candidates[i] >> voteResult[i];  
        } 
        calculatePercentage(voteResult, percentage); // error happened here.
        return 0;
    }
void calculatePercentage(int voteResult[],int percentage[])
{
    int totalVotes = 0;
        for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
        {
            totalVotes += votes[i];
        }
        for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
        {
            double wk_percentage  = static_cast<double>{votes[j])/totalVotes;
            percentage[j]=static_cast<int>(wk_percentage*100);
        }
}

你发布的代码有一堆错误。

  1. calculatePercent() 定义缺少结束的 ';'
  2. NO_OF_CANDIDATE和NUMBER_OF_CANDIDATE之间可能的名称不匹配
  3. 缺少 #include (使用 ifstream)
  4. 缺少 #include <字符串>
  5. 缺少 std:: ifstreamstring 之前的命名空间
  6. votes没有在任何地方声明(应该voteResult吗?
  7. 错误的左大括号,而是在static_cast<double>{votes[j])/totalVotes;

。更不用说您进行计算和参数传递的方式了......

以下编辑的代码应编译,不确定它是否按预期工作:

#include <fstream>
#include <string>
void calculatePercentage(int voteResult[], int percentage[]);
const int NUMBER_OF_CANDIDATE = 10;
int main()
{
    std::ifstream input("votes.txt");
    std::string candidates[NUMBER_OF_CANDIDATE];
    int    voteResult[NUMBER_OF_CANDIDATE]; 
    int    percentage[NUMBER_OF_CANDIDATE];   
    for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) {
        input >> candidates[i] >> voteResult[i];  
    } 
    calculatePercentage(voteResult, percentage); // error happened here.
    return 0;
}
void calculatePercentage(int voteResult[], int percentage[])
{
    int totalVotes = 0;
    for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
    {
        totalVotes += voteResult[i];
    }
    for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
    {
        double wk_percentage  = static_cast<double>(voteResult[j]) / totalVotes;
        percentage[j] = static_cast<int>(wk_percentage*100);
    }
}

也在Ideone上。

感谢大家的评论。我跳过了一些陈述,并在发布时犯了一些错别字。 我按如下方式修复了它们。发生的唯一错误是仍然无法从"int"转换"int*"。只是不知道如何解决它。

#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void calculatePercentage(int voteResult[],int percentage[]);
const int NUMBER_OF_CANDIDATE = 10;
int main()
    {     
        ifstream input("votes.txt",ios::in);

        string candidates[NUMBER_OF_CANDIDATE];
        int    vote[NUMBER_OF_CANDIDATE]; 
        int    percentage[NUMBER_OF_CANDIDATE];   
        for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) {
            input >> candidates[i] >> vote[i];  
        } 
        calculatePercentage(voteResult, percentage); // error happened here.
        return 0;
    }
void calculatePercentage(int voteResult[],int percentage[])
{
    int totalVotes = 0;
        for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
        {
            totalVotes += votes[i];
        }
        for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
        {
            double wk_percentage  = static_cast<double>(votes[j])/totalVotes;
            percentage[j]=static_cast<int>(wk_percentage*100);
        }
}