gpt4 book ai didi

c++ - 我不断收到错误 LNK2019,似乎无法弄清楚如何解决它

转载 作者:行者123 更新时间:2023-11-30 01:20:02 25 4
gpt4 key购买 nike

我正在为我的编程类(class)开发一个项目,当我尝试编译它时,我不断收到构建错误 LNK2019。我试过咨询另一个 CPS 专业,他不太确定为什么我总是收到错误。

// File: Asgn7_Skel.cpp
// CPS 150/Fall 2013 Assignment 7 Skeleton
// Modified from Gaddis Program 8-32 to satisfy the assignment
// requirements.
// Skeleton by: Tamisra H. Sanyal
// Completed by: Kyle Abel
// This program lets the user play a game of rock, paper, scissors
// with the computer. The computer's choices are randomly generated.
// Total 10 rounds are played.
// Change the NumRounds constant to play a different number of rounds

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <string>
#include <array>
using namespace std;

// enumerations of choices and outcomes
enum Choices {Rock, Paper, Scissors, Last};
enum Outcomes {ComputerWin, PlayerWin, Tie,};

// Data for one round
struct GameData
{
Choices computerChoice;
Choices playerChoice;
Outcomes result;
}; // end struct

const int NumRounds(10); // number of rounds to play
const int ArraySize(NumRounds); // we will not use index 0

typedef array<GameData, ArraySize> DataStore;

// These constant arrays are used to translate enumeration constants to
// readable descriptions (see line 9 in textbook's program)
const array<string, 3> ChoiceNames = {"Rock", "Paper", "Scissors"};
const array<string, 3> OutcomeNames = {"Computer win", "Player win", "Tie"};
array<int, 3> ResultsTalley = {};

// Function prototypes
void getPlayerChoice(Choices & choice);
Outcomes getRoundResult(const Choices computerChoice, const Choices playerChoice);

void showRoundResult(const Choices computerChoice, const Choices playerChoice,
const Outcomes roundResult);

void showGameResults(const DataStore & results);

int main()
{
Choices computerChoice, playerChoice;
Outcomes roundResult;
int computerPoints = 0, playerPoints = 0; // Point accumulators
DataStore gameResults = {};

srand(time(NULL)); // Give the random generator

int counter; // a seed to start with
int pl_choice;

cout << "CPS 150 Assignment 7 by Kyle Abel\n\n";
cout << "Let's play Rock-Paper-Scissors!\n";
cout << "We will play " << NumRounds << " rounds.\n\n";

// TODO: Add main function code here
for (counter = 0; counter < NumRounds; counter++)
{
computerChoice = static_cast<Choices>(rand() % 3);
getPlayerChoice(playerChoice);
getRoundResult(computerChoice, playerChoice);
showRoundResult(computerChoice, playerChoice, roundResult);

if (Tie)
{
return 0;
}
else if (ComputerWin)
{
computerPoints++;
}
else
playerPoints++;
} // end for

cout << "\nCPS 150 Assignment 7 complete\n\n";
return 0;
} // end main

void showGameResults(const DataStore & results)
{
cout << "Game results\n";
cout << "============\n";
cout << right << setw(5) << "Round" << ' '
<< left << setw(14) << "Player choice"
<< setw(16) << "Computer choice"
<< setw(13) <<"Round result" << endl;
cout << right << setw(5) << "-----" << ' '
<< left << setw(14) << "-------------"
<< setw(16) << "---------------"
<< setw(13) <<"------------" << endl;

for (int k(1); k < results.size(); k++)
{
cout << right << setw(5) << k << ' ' << left
<< setw(14) << ChoiceNames[results[k].playerChoice]
<< setw(16) << ChoiceNames[results[k].computerChoice]
<< setw(13) << OutcomeNames[results[k].result] << endl;
} // end for

cout << endl;
} // end showGameResults

void getPlayerChoice(Choices playerChoice, int PChoice)
{
cout << "Enter your choice, 1 for Rock, 2 for Paper, or 3 for Scissors";
cin >> PChoice;

if (PChoice != 1 || PChoice != 2 || PChoice != 3)
{
cout << "Please Enter a Valid # 1-3" << "\n\n";
cin >> PChoice;
}
else if (PChoice = 1)
{
PChoice--;
static_cast<Choices>(PChoice);
}
else if (PChoice = 2)
{
PChoice--;
static_cast<Choices>(PChoice);
}
else
{
PChoice--;
static_cast<Choices>(PChoice);
}
}

Outcomes getRoundResult(const Choices computerChoice, const Choices playerChoice)
{
if (computerChoice == playerChoice)
{
return Tie;
}
else if ((playerChoice == 1 && computerChoice == 2) ||
(playerChoice == 2 && computerChoice == 3) ||
(playerChoice == 3 && computerChoice == 1) )
{
return ComputerWin;
}
else
{
return PlayerWin;
}
}

void showRoundResult(const Choices computerChoice, const Choices playerChoice, const Outcomes roundResult)
{
if (Outcomes(Tie))
{
cout << "we have tied!";
}
else if (Outcomes(ComputerWin))
{
cout << "I chose " << ChoiceNames[computerChoice] << ", so I win the game! "
<< ChoiceNames[computerChoice] << " beats " << ChoiceNames[playerChoice]
<< ". \n\n";
}
else if (Outcomes(PlayerWin))
{
cout << "I chose " << ChoiceNames[computerChoice] << ", so you won!! "
<< ChoiceNames[playerChoice] << " beats " << ChoiceNames[computerChoice]
<< ". \n\n";
}
}

这些是我在尝试构建项目时不断遇到的错误:

1>------ Build started: Project: ConsoleApplication15, Configuration: Debug Win32 ------
1>Source.obj : error LNK2019: unresolved external symbol "void __cdecl getPlayerChoice(enum Choices &)" (?getPlayerChoice@@YAXAAW4Choices@@@Z) referenced in function _main
1>C:\Users\Kyle\documents\visual studio 2012\Projects\ConsoleApplication15\Debug\ConsoleApplication15.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

非常感谢任何有关如何解决此问题的指导!

最佳答案

出现此问题是因为您的函数原型(prototype)与函数定义不同。您的原型(prototype)为:

void getPlayerChoice(Choices & choice);

但是你对该函数的定义是:

void getPlayerChoice(Choices playerChoice, int PChoice)

要解决此问题,函数原型(prototype)和定义必须相同。

关于c++ - 我不断收到错误 LNK2019,似乎无法弄清楚如何解决它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com