1. ホーム
  2. c++

[解決済み】関数への引数が多すぎる

2022-02-04 22:27:50

質問

ヘッダーファイルからこのようなエラーが発生します。 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;
    }
}

なぜこのエラーが発生するのか、どうすれば解決できるのか?

解決方法を教えてください。

ヘッダーファイルで、以下のように宣言します。

void printCandidateReport ();

しかし、実装上では

void printCandidateReport(int candidateNum){...}

ヘッダーファイルを次のように変更します。

void printCandidateReport(int candidateNum);