недопустимый нулевой указатель в xstring - PullRequest
0 голосов
/ 17 мая 2011

Итак, я почти закончил с этим заданием, но теперь у меня снова возникают трудности.Когда я пытаюсь нарисовать текст из класса вопроса, я получаю недопустимый нулевой указатель из xstring.У меня есть около 2 часов, так что любая помощь действительно будет оцененакомната, так что это строка, которая вызывает ошибку:

 drawText((WinWidth/2)-200,(WinHeight/2) - 100, curQuestion.question);

любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 17 мая 2011

Ваш оператор = (постоянный вопрос &) неверен, он ничего не делает, только возвращает текущий объект.Если этот объект был создан с помощью конструктора по умолчанию, «вопрос» и «ответ» не инициализируются, и ваша программа может аварийно завершить работу, если используется этот оператор.

Оператор "=" должен копировать каждое поле.Для строковых указателей, таких как «вопрос» и «ответ», необходимо выделить новую память для содержимого строки и скопировать символы из строк объекта, переданного в качестве параметра.Но вам, вероятно, следует все равно избавиться от оператора = и использовать std :: string для «question» и «answer» вместо char * (см. Ниже).

Наконец,

if(answer.find("What is") && answer.find(answer))

не имеет смысла.Вероятно, это должно быть что-то вроде:

bool Question::checkAnswer(string proposedAnswer)
{
    if(question.find("What is") && answer.find(proposedAnswer))
        return true;
    return false;
}

... при условии, что вы изменили тип вопроса и ответа с char * на string:

public:
    int col;
    int row;
    bool dailyDouble;
    string question;
    string answer;
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...