2014-09-24 10 views
1

Я получаю эту ошибку из моего заголовочного файла: too many arguments to function void printCandidateReport();. Я довольно новичок в C++ и просто нуждаюсь в руководстве в правильном направлении для решения этой ошибки.Слишком много аргументов для функции

Мой заголовок файла выглядит следующим образом:

#ifndef CANDIDATE_H_INCLUDED 
#define CANDIDATE_H_INCLUDED 

// Max # of candidates permitted by this program 
const int maxCandidates = 10; 

// How many candidates in the national election? 
int nCandidates; 

// How many candidates in the primary for the state being processed 
int nCandidatesInPrimary; 

// Names of the candidates participating in this state's primary 
extern std::string candidate[maxCandidates]; 

// Names of all candidates participating in the national election 
std::string candidateNames[maxCandidates]; 

// How many votes wone by each candiate in this state's primary 
int votesForCandidate[maxCandidates]; 

void readCandidates(); 
void printCandidateReport(); 
int findCandidate(); 
#endif 

и файл, вызывающий этот заголовочный файл:

#include <iostream> 
#include "candidate.h" 
/** 
* Find the candidate with the indicated name. Returns the array index 
* for the candidate if found, nCandidates if it cannot be found. 
*/ 
int findCandidate(std::string name) { 
    int result = nCandidates; 
    for (int i = 0; i < nCandidates && result == nCandidates; ++i) 
     if (candidateNames[i] == name) 
      result = i; 
    return result; 
} 

/** 
* Print the report line for the indicated candidate 
*/ 
void printCandidateReport(int candidateNum) { 
    int requiredToWin = (2 * totalDelegates + 2)/3; // Note: the +2 rounds up 
    if (delegatesWon[candidateNum] >= requiredToWin) 
     cout << "* "; 
    else 
     cout << " "; 
    cout << delegatesWon[candidateNum] << " " << candidateNames[candidateNum] 
     << endl; 
} 

/** 
* read the list of candidate names, initializing their delegate counts to 0. 
*/ 
void readCandidates() { 
    cin >> nCandidates; 
    string line; 
    getline(cin, line); 

    for (int i = 0; i < nCandidates; ++i) { 
     getline(cin, candidateNames[i]); 
     delegatesWon[i] = 0; 
    } 
} 

почему я получаю эту ошибку и как я могу это исправить?

ответ

6

заголовочного файла вы объявляете:

void printCandidateReport(); 

Но по реализации является:

void printCandidateReport(int candidateNum){...} 

Изменить заголовок file to

void printCandidateReport(int candidateNum); 
2

Ошибка too many arguments to function может быть устранена путем устранения избыточных аргументов (параметров) в функции.

Эта ошибка возникла из-за того, что файл заголовка не имеет значений параметров, а в исходном коде используется параметр int.

У вас есть два варианта: вы можете добавить отсутствующий параметр int в объявление функции или полностью удалить его из функции.

3

Сообщение об ошибке сообщает вам, в чем проблема.

В файле заголовка вы объявляете функцию без параметров:

void printCandidateReport(); 

В исходном файле вы определяете его с параметром типа int:

void printCandidateReport(int candidateNum){ 

Либо добавить недостающий параметр в декларация или удалить ее из определения.

+0

Я буквально избил ваш пост на одну секунду, странно! – Chantola

2

Файл заголовка объявляет функцию printCandidateReport() без параметров, а файл cpp определяет функцию с параметром int. Просто добавьте параметр INT в объявлении функции в файле заголовка, чтобы исправить это

Смежные вопросы