未定义的引用

Undefined reference to?

本文关键字:引用 未定义      更新时间:2023-10-16

我正在用c++编写一个骰子滚动游戏的代码,但我一直遇到错误代码"未定义引用'cootieComplete(int)'" &我不知道如何修理它。作业是创建一个虱子游戏,你掷骰子,然后应用它来添加不同的身体部位的虱子。

这是我的代码。

#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
int rolldice();
int applyroll(int);
bool cootieComplete(int);
void printCootie(int);
        int numBody=0;
        int numHead=0;
        int numAntenna=0;
        int numWings=0;
        int numTongue=0;
        int numLeg=0;
int main(int argc, char *argv[])
{
   int diceroll;
   int apply;
   srand(time(0));
   do {
   diceroll = rolldice();
   apply = applyroll(diceroll);
   printCootie(diceroll);
   }
   while (!cootieComplete(apply)) ;

    system("PAUSE");
    return EXIT_SUCCESS;
}
     int rolldice()
 {
     int diceroll = rand() % 6 + 1;
     return diceroll;
}
    int applyroll(int diceroll){
                   if (diceroll == 1)
                   {
                    numBody++;
                   }
                   if (diceroll == 2 && numBody >= 1)
                   {
                    numHead++;
                   }
                   if (diceroll == 3 && numHead >=1)
                   {
                    numAntenna++;
                   }
                   if (diceroll == 4 && numBody >= 1)
                   {
                    numWings++;
                   }
                   if (diceroll == 5 && numHead >= 1)
                   {
                    numTongue++;
                   }
                   if (diceroll == 6 && numBody >= 1)
                   {
                    numLeg++;
                   }
            return diceroll;
            }
     bool cootieComplete(int numBody,int numHead,int numAntenna,int numWings,int numTongue,int numLeg) {
         if (numBody>0&&numHead>0&&numAntenna>1&&numWings>1&&numTongue!=0&&numLeg>=4) {
             return true;
          }
         else {
               return false;
          }
    }
    void printCootie(int diceroll){
                   if (diceroll == 1)
                   {
                    cout << "Body Added!" << endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   if (diceroll == 2 && numBody >= 1)
                   {
                    cout << "Head Added!" << endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   else if (diceroll == 2)
                   {
                    cout <<"No body, you can't add head!";
                   }
                   if (diceroll == 3 && numHead >=1)
                   {
                    cout << "Antenna Added!"<<endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   else if (diceroll == 3)
                   {
                    cout << "No head, you can't add antenna!";
                   }
                   if (diceroll == 4 && numBody >= 1)
                   {
                    cout<<"Wing Added!" << endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   else if (diceroll == 4)
                   {
                    cout << "No body, you can't add wings!";
                   }
                   if (diceroll == 5 && numHead >= 1)
                   {
                    cout<<"Tongue Added!" << endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   else if (diceroll == 5)
                   {
                    cout << "No head, you can't add tongue!";
                   }
                   if (diceroll == 6 && numBody >= 1)
                   {
                    cout<<"Leg Added!" << endl;
                    cout << "There are " << numBody << " body, " << numHead << " head, " << numAntenna << " antenna, " << numWings << " wings, " << numTongue << " tongues, " << numLeg << " legs." << endl;
                   }
                   else if (diceroll == 6)
                   {
                    cout << "No body, you can't add legs";
                   }
     }

声明 cootieComplete接受1 int,你定义它接受6,然后你调用接受1的版本。

// Declaration
bool cootieComplete(int);
...
while (!cootieComplete(apply))
....
// Definition
bool cootieComplete(int numBody,int numHead,int numAntenna,int numWings,int numTongue,int numLeg)

由于您调用了以1 int为参数的版本,编译器正在寻找cootieComplete(int)的定义,但找不到它,因此抛出undefined reference错误。

它们需要匹配。所以像这样定义它:

bool cootieComplete(int, int, int, int, int, int);

Eric是正确的,如果您需要它们匹配的话。让它们看起来像

bool cootieComplete(int, int, int, int, int, int);
bool cootieComplete(int numBody,int numHead,int numAntenna,int numWings,int numTongue,int numLeg){
  // Code here
}

这应该修复你的错误