首页 > 解决方案 > LNK2019 & LNK1120 C++ 错误。程序无法编译 - 作业

问题描述

该程序无法在 Visual Studio 社区中编译,我不知道为什么。我研究了这个功能,似乎找不到答案。任何帮助将不胜感激,因为这是我在大学的模块。我对 C++ 有点陌生,但对其他语言有一些经验。我似乎无法找到如何让程序运行。编译时出现以下错误代码:

main.cpp: In function ‘void runGame(std::__cxx11::string*, std::__cxx11::string*, int)’: 
main.cpp:115:53: error: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’
to ‘std::__cxx11::string* {aka std::__cxx11::basic_string<char>*}’
for argument ‘1’ to ‘std::__cxx11::string answersGiven(std::__cxx11::string*, std::__cxx11::string*, int, int)’ 
answersGiven(correctAns[0], wrongAns[0], max, max2);

这是代码:

#include<iostream>
#include<string>
using namespace std;

int inputCheck(string menu, int limit);                         // Validates User Input for topic and difficulty selection.
void runGame(string questions[], string answers[], int level);  // Function runs game based on questions.
string modifyQuestion(string q, int mod);                       // Function modifies question based on difficulty level.
string answersGiven(string correct[], string wrong[], int maxC, int maxW);

int main() {

    string questions[3][4] = {                          // 2D array storing answers. Each row stores a Country.
        { "England", "Wales", "France", "Germany" },    // Stores Europe Questions.
        { "Brazil", "Peru", "Argentina", "Columbia" },  // Stores Additional Questions.
        { "Q1", "Q2", "Q3", "Q4" }                      // Stores South American Questions.
    };

    string answers[3][4] = {                            // 2D array storing answers. Each row stores a city.
        {"London", "Cardiff", "Paris", "Berlin"},       // Europe Answers.
        {"Brasila", "Lima", "Buenos Aires", "Bogota"},  // South America Answers.
        { "A1", "A2", "A3", "A4" }                      // Stores additional answers.
    };

    string topics[3] = { "Capital Cities", "" };

    char replay;                                        // Variable to check if the user wants to continue playing.
    do {
        cout << "Please choose one topic for the quiz:\n";

        int choice = inputCheck("1: Europe\n2: South America\n3: Testing", 3);      // Gets topic choice via validation function.

        cout << "\nNow Select a Difficulty:\n";
        int difficulty = inputCheck("1: Easy\n2: Medium\n3: Hard", 3);  // Gets difficulty choice via validation function.
        choice--;

        // run the game
        runGame(questions[choice], answers[choice], difficulty);

        // Checks if user wants to replay game.
        cout << "Do you want to play again? Press (Y) to replay: ";
        cin >> replay;                                  // Grabs input from user.
        replay = toupper(replay);                       // Sets data to upper case.


    } while (replay == 'Y');

    return 0;
}

int inputCheck(string menu, int limit) {


    cout << menu << endl;                               // Presents menu of options.
    int num;                                            // Variable to store user's input.
    cin >> num;                                         // gets user's input.

    while (cin.fail() || num < 1 || num > limit) {
        cout << "Invalid Input..." << endl;             // Outputs error message.
        cout << menu << endl;                           // Presents menu again.
        cin.clear();                                    // Clearsinput error glag.
        cin.ignore(1000, '\n');                         // Ignores previous inputted data.
        cin >> num;                                     // grabs input again.
    }

    return num;
}

void runGame(string questions[], string answers[], int level) {

    string correctAns[] = {};
    string wrongAns[] = {};

    cin.ignore(1000, '\n');                             // Ignore any trailing enter keys in input stream.
    int lives = 3;                                      // Stores the amount of users lives.
    string answer;                                      // Stores user's answer.
    int count = 0;                                      // Keeps track of the current question.
    int score = 0;                                      // Keeps track of user's score.

    while (lives > 0 && count < 4) {
        string question = questions[count];             // Gets current question from array.
        
        // Modifying question if medium or hard difficulty selected.
        if (level == 2) {
            // Medium
            question = modifyQuestion(question, 6);

        }
        else if (level == 3) {
            // Hard
            question = modifyQuestion(question, 2);
        }
        

        // Asking Question.
        cout << "What is the capital city of " << question << endl; // Asks user the question.
        getline(cin, answer);                                       // Gets answer from user, includes answers that are more than one word.
        answer[0] = toupper(answer[0]);                             // Converts first character to upper case.

        int max = 0;
        int max2 = 0;

        if (answer == answers[count]) {                             // Checks user's answer against current answer.
            cout << "Well Done! You've got one right" << endl;      // Correct answer message.
            count++;                                                // Adds one to question counter.
            score++;                                                // Adds one to score.
            correctAns[count] = answer;
            max++;
        }
        else {
            lives--;                                                // Deducts one from lives.
            cout << "Oops, Not quite right... You have " << lives << " lives remaining.";           // Outputs incorrect message.
            wrongAns[count] = answer;
            max2++;
        }
        answersGiven(correctAns[0], wrongAns[0], max, max2);
    }

    if (lives == 0 && score == 0) {                 // Checks if user didnt get anything correct.
        cout << "Wow.. 0 / 4. Thats not good." << endl;
    }
    else {
        cout << "You got " << score << " Correct and had " << lives << " lives remaining" << endl;
    }

    cout << "\nThese are the questions you got wrong:\n";

}

string modifyQuestion(string q, int mod) {

    for (int i = 0; i < q.length(); i++) {
        if (i % mod == 0) {                         // If counter is divisible by the mod value.
            q[i] = '*';                             // Change current letter to an aterix.
        }
    }
    return q;                                       // return modified string back to the function.
}


string answersGiven(string correct[], string wrong[], int maxC, int maxW) {

    for (int i = 0; i < maxC; i++) {
        cout << correct[i] << " - Correct" << endl;
    }
    for (int i = 0; i < maxW; i++) {
        cout << wrong[i] << " - Incorrect" << endl;
    }

}

标签: c++compiler-errorscompilation

解决方案


推荐阅读