Вставка узла (содержащего значения str и bool) в массив C ++ - PullRequest
0 голосов
/ 07 декабря 2018

В любом случае, я работаю над викториной для школьного проекта.Я читаю вопросы и ответы из файла CSV, который будет отображаться пользователю через терминал.Но у меня возникают проблемы при вставке моих узлов в массив.

Моя тактика здесь - сначала прочитать вопрос, а затем прочитать правильный ответ, а последние три ответа - это неправильные ответы, которые будут перемешаны позже.

ifstream questionFile("questions.csv");
getline(questionFile, header);

if(questionFile.is_open())
{
    string line;    
    while(getline(questionFile, line))
    {
        stringstream ss;
        ss << line;
        string item;
        getline(ss, item, ',');
        question = item;

        getline(ss, item, ',');
        answer1 = item;
        getline(ss, item, ',');
        answer2 = item;
        getline(ss, item, ',');
        answer3 = item;
        getline(ss, item, ',');
        answer4 = item;

        g.insertAndShuffle(question, answer1, answer2, answer3, answer4);

     }
}
questionFile.close()   

Затем я передаю эти значения в функцию, которая назначит строки ответа в узел, который также будет содержать логическое значение (правильный ответ остается верным).Вот моя проблема, я думаю ... Затем я передаю указатели на эти узлы вместе с вопросом в массив [5], чтобы я мог перемешать массив [1] - [5] для рандомизации ответов.

Здесьэто функция:

string* Game::insertAndShuffle(string question, string answer1, string answer2, string answer3, string answer4)
{   
    Answer *nodeC = new Answer(answer1, true);
    Answer *node1 = new Answer(answer2, false);
    Answer *node2 = new Answer(answer3, false);
    Answer *node3 = new Answer(answer4, false);

    quizArray[0] = question;
    quizArray[1] = nodeC;
    quizArray[2] = node1;
    quizArray[3] = node2;
    quizArray[4] = node3;

    random_shuffle(&quizArray[1], &quizArray[5]);

    return quizArray;
}

Класс, содержащий функцию:

class Game
{
public:
    bool isAsked;
    string quizArray[5];
    int questionNum = 1;
    bool letsPlay = false;

    string* insertAndShuffle(string question, string answer1, string answer2, string answer3, string answer4);
    string askQuestions(string* quizArray);
    bool startGame(bool letsPlay, string playerName);
    // bool checkAnswer(string playerResponse, string answer1);
private:
    Answer *nodeC;
    Answer *node1;
    Answer *node2;
    Answer *node3;
};

И структура, используемая для ответов:

struct Answer
{
    string answer;
    bool isCorrect;

    Answer();
    Answer(string item, bool value)
    {
        answer = item;
        isCorrect = value;
    }
};

Кажется, естьпроблема, когда я пытаюсь получить доступ к указателю на структуру через функцию класса.Вот моя ошибка:

./project.hpp:22:2: error: unknown type name 'Answer'
Answer *nodeC;
^
./project.hpp:23:2: error: unknown type name 'Answer'
Answer *node1;
^
./project.hpp:24:2: error: unknown type name 'Answer'
Answer *node2;
^
./project.hpp:25:2: error: unknown type name 'Answer'
Answer *node3;
^
./project.hpp:43:2: error: C++ requires a type specifier for all     declarations
CorrectAnswer();
^
./project.hpp:44:2: error: C++ requires a type specifier for all declarations
CorrectAnswer(string item, bool value)
^
In file included from projectMain.cpp:8:
./project.cpp:85:22: error: no matching constructor for initialization of 'Answer'
Answer *nodeC = new Answer(answer1, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...